三角形のレンダリング
楽墨堂 小倉康樹

ベクトル演算記号の説明
* : 内積
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
となる。


Copyright (C) 1998-2009 Ogura Koki All rights reserved.