| * : 内積 x : 外積 |A| : Aのサイズ、すなわちsqrt(A*A) |
| 頂点1: P1 = [ P1x, P1y, P1z ] 頂点2: P2 = [ P2x, P2y, P2z ] 頂点3: P3 = [ P3x, P3y, P3z ] 視点位置: Pe = [ Pex, Pey, Pez ] 視線方向: Pd = [ Pdx, Pdy, Pdz ] |
| A = P2 - P1 B = P3 - P1 C = P1 - Pe t = Pd * (A x B) このとき t == 0 ならば視線方向が三角形の面に対して並行なので終了。 u = (Pd * (B x C)) / t このとき u < 0 または u > 1 ならば交点は無いので終了。 v = (Pd * (C x A)) / t このとき v < 0 または v > 1 ならば交点は無いので終了。 また u + v > 1 の時も交点は無いので終了。 このとき視線と三角形の交点 PP は PP = A * u + B * v + P1 また PP = Pe + Pd * s とすると A * u + B * v + P1 = Pe + Pd * s から s = Pd * (A * u + B * v + C) このとき s <= 0 ならば視線方向に交点は無いので終了。 各頂点の重み W1,W2,W3 は W1 = 1 - u - v W2 = u W3 = v となる。 |