三角形と直線の交点の求め方について確認しよう.三角形はp1, p2, p3の3点の座標で定められており,直線は以下の式で表されるものとする.
$$ \begin{equation} \left[ \begin{array}{c} x \\ y \\ z \end{array} \right] = \left[ \begin{array}{c} x_\mathrm{o} \\ y_\mathrm{o} \\ z_\mathrm{o} \end{array} \right] + t \left[ \begin{array}{c} u_l \\ v_l \\ w_l \end{array} \right] \tag{1} \end{equation} $$三角形のローカルな基底を次のように定める.ただし\(\boldsymbol{R}_\mathrm{X}\)と\(\boldsymbol{R}_\mathrm{Y}\)は直交しておらず,いずれの基底も正規化されていない.
$$ \begin{equation} \boldsymbol{R}_\mathrm{X} = \boldsymbol{p}_2-\boldsymbol{p}_1, ~~ \boldsymbol{R}_\mathrm{Y} = \boldsymbol{p}_3-\boldsymbol{p}_1, ~~ \boldsymbol{R}_\mathrm{Z} = \boldsymbol{R}_\mathrm{X} \times \boldsymbol{R}_\mathrm{Y} \tag{2} \end{equation} $$平面と直線が平行であるかどうかは,以下の条件で確認できる.
$$ \begin{equation} \boldsymbol{l} \cdot \boldsymbol{R}_\mathrm{Z} = 0 \tag{2} \end{equation} $$平面と直線が平行でない場合,平面と直線の式を解けば交点が求められるが,ここでは直線を平面のローカル座標に変換してから解を求めよう. ローカル座標での直線および平面は,それぞれ以下のように表される.
$$ \begin{equation} \left[ \begin{array}{c} X \\ Y \\ Z \end{array} \right] = \left[ \begin{array}{c} X_\mathrm{o} \\ Y_\mathrm{o} \\ Z_\mathrm{o} \end{array} \right] + t \left[ \begin{array}{c} U_l \\ V_l \\ W_l \end{array} \right], ~~ \mathrm{where}~~ \left[ \begin{array}{c} X_\mathrm{o} \\ Y_\mathrm{o} \\ Z_\mathrm{o} \end{array} \right] = \left[ \begin{array}{ccc} \boldsymbol{R}_\mathrm{X} & \boldsymbol{R}_\mathrm{Y} & \boldsymbol{R}_\mathrm{Z} \end{array} \right]^\mathrm{-1} \left\{ \left[ \begin{array}{c} x_\mathrm{o} \\ y_\mathrm{o} \\ z_\mathrm{o} \end{array} \right] - \boldsymbol{p}_1 \right\}, ~~ \left[ \begin{array}{c} U_l \\ V_l \\ W_l \end{array} \right] = \left[ \begin{array}{ccc} \boldsymbol{R}_\mathrm{X} & \boldsymbol{R}_\mathrm{Y} & \boldsymbol{R}_\mathrm{Z} \end{array} \right]^\mathrm{-1} \left[ \begin{array}{c} u_l \\ v_l \\ w_l \end{array} \right] \tag{5} \end{equation} $$ $$ \begin{equation} \left[ \begin{array}{c} X \\ Y \\ Z \end{array} \right] \cdot \left[ \begin{array}{c} 0 \\ 0 \\ 1 \end{array} \right] = 0 \tag{6} \end{equation} $$これより交点に対応するパラメタtは以下のように表される.
$$ \begin{equation} t = - \frac{Z_\mathrm{o}}{W_l} \tag{6} \end{equation} $$上記の方法で求めた平面と直線の交点\((X,Y,0)\)が,三角形領域にに含まれるかどうかは,以下の条件を確認すればよい.
$$ \begin{equation} 0 \le X \le 1, ~~\mathrm{and}~~ 0 \le Y \le 1, ~~\mathrm{and}~~ 0 \le X+Y \le 1 \tag{11} \end{equation} $$