0

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

截至目前,我计划使用 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 中构建地形的想法。

4

1 回答 1

1

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

我不熟悉three.js,但我认为确定顶点的位置很容易。您知道顶点在 之间均匀分布x=0...300z=0...300并且您知道y坐标。所以[i,j]-th 顶点有 position [i*300/10, y, j*300/10]

10x10总共有段,每个段由 2 个三角形组成。这是你必须小心的地方。三角形可以形成两种不同的形状:

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

这可能会导致不同的形状和(我对此不完全确定)进入不同的表面积。

当您了解 three.js 究竟是如何创建曲面时,迭代地对三角形曲面求和应该相对容易。

如果能够在没有对所有三角形进行实际迭代的情况下进行求和,那就太好了,但是,现在,我不知道该怎么做......

于 2012-07-15T07:33:02.910 回答