0

3D空間で2つの三角形の間の角度を計算したかったのです。2つの三角形は、常に正確に2つのポイントを共有します。例えば

三角形1:

Point1 (x1, y1, z1),  
Point2 (x2, y2, z2),   
Point3 (x3, y3, z3).  

三角形2:

Point1 (x1, y1, z1),  
Point2 (x2, y2, z2),  
Point4 (x4, y4, z4).

CUDAでそれらの間の角度を効率的に計算する方法はありますか?

4

2 に答える 2

4

平面ごとに、法線ベクトル (その平面のすべての線に垂直) を作成する必要があります。これを行う簡単な方法は、三角形の 2 つの非平行線の外積を取ることです。(例 (P3-P1) X (P2-P1) および (P4-P1) X (P2-P1))。

それらを正規化します。

これらの 2 つの方向ベクトルの内積は、角度の余弦を与えます。

注意が必要なのは、縮退した三角形に注意することです! いずれかの三角形を定義する 3 点すべてが同一線上にある場合 (その三角形は単なる線です)、求めているものは定義されておらず、外積はゼロで除算されます。その場合にどうするかを決める必要があります。

これを GPU で実行しようとしているので、効率が気になる場合は、理想的には分岐なしでこの関数を作成することをお勧めします。つまり、if句で縮退した三角形をテストする代わりに、三項で試してみるべきですA ? B : C

于 2010-01-27T17:57:19.953 に答える
1

三角形の間の角度は、各三角形の 3 つの点によって定義される平面の間の角度と同じです。

点 1 と点 2 の両方が両方の平面にあるため、これらの点の 1 つから点 3、そして点 4 への方向余弦を計算します。次に、これらの 2 つの線の間の角度の余弦は、積の和です。対応する方向余弦の

于 2010-01-26T21:17:22.017 に答える