二つの三角形が交差するかどうかを検索またはポイントの2セットが与えられていない
((X1、Y1、Z1)、(X2、Y2、Z2)、(X3、Y3、Z3))と
( (p1、q1、r1)、(p2、q2、r2)、(p3、q3、r3))である。
これらの三角形が交差しているかどうかをどのように確認しますか?
この問題の1つの明白な解決策は、各三角形によって形成される平面の方程式を見つけることです。平面が平行であれば交差しません。
そうでなければ、これらの面の法線ベクトルを使用して、これらの面の交差によって形成される線の式を見つけます。
ここで、この線が両方の三角形領域にある場合、これらの2つの三角形は交差します。
trianglesIntersect(Triangle T1, Triangle T2)
{
if(trianglesOnParallelPlanes(T1, T2))
{
return false
}
Line L1 = lineFromPlanes(planeFromTriangle(T1), planeFromTriangle(T2))
if(lineOnTriangle(T1, L1) AND lineOnTriangle(T2, L1))
{
return true
}
return false
}
上記の関数を記述する方法を知っているとすれば、triangleIntersectの他の実装を検討する必要がありますか?
この問題を解決するアルゴリズムが高速ですか?
[math.stackexchange.com](http://math.stackexchange.com) )代わりに。 SOはプログラミング問題のためのものです。 – PengOne
http://www.applet-magic.com/trintersection.htm – Jacob
この質問は閉鎖されていたことに私は失望しています。これは、コンピュータグラフィックス、レイトレーシング、ビデオゲームでよく知られているプログラミング問題です。私はそれを複数回自分でプログラミングしました。ここでどのような話題になれますか? –