计算表面积

时间:2012-07-09 13:53:06

标签: webgl three.js

对于给定的地形,您如何计算其表面积?

截至目前,我计划使用Three.js构建地形,例如:

var geo = new THREE.PlaneGeometry(300, 300, 10, 10);

for (var i = 0; i < geo.vertices.length; i++)
    geo.vertices[i].y = someHeight; // Makes the flat plain into a terrain 

接下来,如果可以遍历几何体的每个底层三角形(即赋予WebGL阵列的TRIANGLE_STRIP的三角形),则可以将每个三角形的面积相加以得到总表面积。

这种方法听起来合适吗?如果是这样,你如何确定各个三角形的顶点?

欢迎在WebGL / Three.js中构建地形的任何其他想法。

1 个答案:

答案 0 :(得分:1)

我认为你的方法听起来不错,不应该难以实施。

我不熟悉three.js,但我认为确定顶点的位置非常容易。您知道顶点在x=0...300z=0...300之间均匀分布,您知道y坐标。因此[i,j]个顶点的位置为[i*300/10, y, j*300/10]

您总共拥有10x10个细分受众群,每个细分受众群包含2个三角形。这是你必须要小心的地方。 三角形可以形成两种不同的形状:

------        ------
| \  |        |   /|
|  \ |   or   |  / |
|   \|        | /  |
------        ------

可能导致不同的形状和(我不完全确定)进入不同的表面区域。

当你发现three.js究竟是如何创建表面时,迭代地对三角形表面求和应该相对容易。

能够在不对所有三角形进行实际迭代的情况下完成总和会很好,但是,现在,我不知道该怎么做...