2

平面がある場合は、xy 平面と、3 次元で任意に回転/平行移動できる直角プリズムとしましょう。2つの交差領域を決定するために使用できるクールなアルゴリズム/方法はありますか?

4

2 に答える 2

2

R1 つのアプローチは、プリズムと平面の間の多角形の交差領域を明示的に見つけ、三角形に分割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);  
}

参照。http://alienryderflex.com/polygon_area/

于 2017-06-15T12:32:57.317 に答える