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...300頂点が の間で均等に分布していることと、座標z=0...300がわかっています。yしたがって、[i,j]- 番目の頂点の位置は[i*300/10, y, j*300/10]です。

合計でセグメントが10x10あり、各セグメントは 2 つの三角形で構成されています。ここは注意が必要です。三角形は、次の 2 つの異なる形状を形成できます。

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

これにより、形状が異なり、(これについては完全にはわかりませんが)異なる表面積になる可能性があります。

three.js がサーフェスを作成する正確な方法がわかれば、三角形のサーフェスを繰り返し合計するのは比較的簡単なはずです。

すべての三角形を実際に反復せずに合計を計算できるといいのですが、今のところ、その方法がわかりません...

于 2012-07-15T07:33:02.910 に答える