平面と線分の交点

平面A、線分ABがあったときに、その交点を求めるには?
要素は3次元空間内に存在するものとします。

解説

平面Fを
a x + b y + c z = d ・・・式①
線分ABを、媒介変数tを用いて、
P = A + t e ・・・式②
 A = ( Ax, Ay, Az )
 e = [ Bx-Ax By-Ay Bz-Az ]
  = [ Ex Ey Ez ]
とします。

式②を成分に分解します。
x = Ax + t Ex
y = Ay + t Ey
z = Az + t Ez

式①に代入します。
 a x + b y + c z = d
⇔a (Ax + t Ex) + b ( Ay + t Ey ) + c ( Az + t Ez ) = d
⇔a Ax + t a Ex + b Ay + t b Ey + c Az + t c Ez = d
⇔t ( a Ex + b Ey + c Ez ) = d - a Ax - b Ay - c Az
⇔t = { d - ( a Ax + b Ay + c Az ) } / ( a Ex + b Ey + c Ez )

DE = a Ex + b Ey + c Ez
とします。

DEがゼロなとき
 交点はありません(平面Aと線分ABは平行です)
DEがゼロでないとき
 平面Aと直線ABとの交点は、
 P = A + t e
  A = ( Ax, Ay, Az )
  e = [ Bx-Ax By-Ay Bz-Az ]
  t = { d - ( a Ax + b Ay + c Az ) } / ( a Ex + b Ey + c Ez )
 e < 0 : 点Pは点Aより手前
 e > 1 : 点Pは点Aより奥

ダウンロード

サンプルプロジェクト