ホーム > プログラミング > グラフィックス プログラミング > 2平面の交線


2平面の交線

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

解説

平面F1を
 a1 x + b1 y + c1 z = d1 ・・・式@
平面F2を
 a2 x + b2 y + c2 z = d2 ・・・式A
とし、
交線Lを交線の通る点A、交線の方向ベクトルe、媒介変数t、を用いた、
P = A + t e
として求めることとします。

交線の方向ベクトルe は、2つの平面の法線ベクトルと垂直なベクトルです。
2つのベクトルと垂直なベクトルは、外積計算により求まります。
e = [ b1 c2 - c1 b2 c1 a2 - a1 c2 a1 b2 - b1 a2 ]
このベクトルの各成分は、後で使用するので、
Xe = b1 c2 - c1 b2
Ye = c1 a2 - a1 c2
Ze = a1 b2 - b1 a2
とします。

次に、交線が通る任意の1点Aを求めます。
これは、言いかえると、式@、式Aをとともに満たすをx y z の組を見つけることです。

連立3元1次方程式を、z = 0 として、連立2元1次方程式に見立てて、x、yを求めます。
a1 x + b1 y = d1 ・・・式B
a2 x + b2 y = d2 ・・・式C
式B、式Cより
x = ( d1 b2 - d2 b1 ) / ( a1 b2 - a2 b1 )
 = ( d1 b2 - d2 b1 ) / Ze
y = ( d1 a2 - d2 a1 ) / ( b1 a2 - b2 a1 )
 = ( d1 a2 - d2 a1 ) / ( - Ze )

Ze がゼロでなければ、( x , y , 0 )という形で点Aが求まります。

Ze がゼロのときには、y = 0 として、連立2元1次方程式に見立てて、x、zを求める。
 a1 x + c1 z = d1 ・・・式D
 a2 x + c2 z = d2 ・・・式E
式D、式Eより
x = ( d1 c2 - d2 c1 ) / ( a1 c2 - a2 c1 )
 = ( d1 c2 - d2 c1 ) / ( - Ye )
z = ( d1 a2 - d2 a1 ) / ( c1 a2 - c2 a1 )
 = ( d1 a2 - d2 a1 ) / Ye

Ye がゼロでなければ、( x , 0 , z )という形で点Aが求まる。

Ze, および Ye がゼロのときには、x = 0 として、連立2元1次方程式として、y、zを求める。
 b1 y + c1 z = d1 ・・・式F
 b2 y + c2 z = d2 ・・・式G
式F、式Gより
y = ( d1 c2 - c2 c1 ) / ( b1 c2 - b2 c1 )
 = ( d1 c2 - d2 c1 ) / Xe
z = ( d1 b2 - d2 b1 ) / ( c1 b2 - c2 b1 )
 = ( d1 b2 - d2 b1 ) / ( - Xe )

Xe がゼロでなければ、( 0 , y , z )という形で点Aが求まる。

Xe, Ze, Ye がすべてゼロのときには、2つの平面は平行で交線がない場合です。


まとめますと、
まず、2つの平面の法線ベクトルの外積計算により、交線の方向ベクトル を求めます。
e = [ b1 c2 - c1 b2 c1 a2 - a1 c2 a1 b2 - b1 a2 ]
ここで、
 Xe = b1 c2 - c1 b2
 Ye = c1 a2 - a1 c2
 Ze = a1 b2 - b1 a2
とします。
交線Lが通る点Pは、
Ze ≠ 0 のとき、
 ( ( d1 b2 - d2 b1 ) / Ze, ( d1 a2 - d2 a1 ) / ( - Ze ), 0 )
Ye ≠ 0 のとき、
 ( ( d1 c2 - d2 c1 ) / ( - Ye ), 0, ( d1 a2 - d2 a1 ) / Ye )
Xe ≠ 0 のとき
 ( 0, ( d1 c2 - d2 c1 ) / Xe, ( d1 b2 - d2 b1 ) / ( - Xe ) )
Xe = 0, Ye = 0, Ze = 0 のとき、
 交線はありません(2平面は平行です)

ダウンロード

サンプルプロジェクト

コメント


ご意見、ご感想、ご質問、ご要望等は、「コメントを投稿する」もしくは「ホーム > コンタクト」よりお願いいたします。
内容の誤り、誤字脱字、リンクミスなどの問題点を発見された場合には「コメントを投稿する」もしくは「ホーム > コンタクト」より連絡していただけると幸いです。


Copyright (c) 2004-2010 Nobuki HIRAMINE All rights reserved.