对于给定的地形,您如何计算其表面积?
截至目前,我计划使用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中构建地形的任何其他想法。
答案 0 :(得分:1)
我认为你的方法听起来不错,不应该难以实施。
我不熟悉three.js,但我认为确定顶点的位置非常容易。您知道顶点在x=0...300
,z=0...300
之间均匀分布,您知道y
坐标。因此[i,j]
个顶点的位置为[i*300/10, y, j*300/10]
。
您总共拥有10x10
个细分受众群,每个细分受众群包含2个三角形。这是你必须要小心的地方。
三角形可以形成两种不同的形状:
------ ------
| \ | | /|
| \ | or | / |
| \| | / |
------ ------
可能导致不同的形状和(我不完全确定)进入不同的表面区域。
当你发现three.js究竟是如何创建表面时,迭代地对三角形表面求和应该相对容易。
能够在不对所有三角形进行实际迭代的情况下完成总和会很好,但是,现在,我不知道该怎么做...