平面がある場合は、xy 平面と、3 次元で任意に回転/平行移動できる直角プリズムとしましょう。2つの交差領域を決定するために使用できるクールなアルゴリズム/方法はありますか?
質問する
792 次
2 に答える
2
R
1 つのアプローチは、プリズムと平面の間の多角形の交差領域を明示的に見つけ、三角形に分割R
し、三角形の面積を合計して、交差面積の合計を求めることです。
交差するポリゴンの頂点は、プリズムのエッジと平面の間で一連の線と平面の交差テストR
を実行することによって見つけることができます。
平面/プリズムの相対的な向きに基づいて、交差するポリゴンはさまざまな構成を取ることができます (つまり、常に長方形になるとは限りません!)。ただし、正角柱の場合、交差する領域は常に凸状である必要があり、三角測量を単純なファンとして取得できます。
交点の総面積の三角形分割を考えると、R
単純に三角形の面積の合計です。
于 2013-07-16T18:40:43.977 に答える
1
多角形の交差領域を取得したら、面積を計算するために三角形分割する必要はありません。もっと単純なアルゴリズムがあります:
float area = 0.0f;
// Run through all segments
for (int i = 0; i < corners.Length; i++)
{
// Get end points of segments
Vector2 A = corners[i];
Vector2 B = corners[(i+1) % corners.Length];
// Add the signed(!) area of a quadrangle with two corners A, B
// and two corners with same y values on the y axis
//
// |---------A
// | + /
// |-------B
//
// |-------B
// | - \
// |---------A
//
area += 0.5f * (A.x + B.x) * (B.y - A.y);
}
于 2017-06-15T12:32:57.317 に答える