2直線間の距離(3次元)2005/12/15 左図のように点aを通り方向ベクトルがdaの直線 l ,それと,点bを通り方向ベクトルがdbの直線
m を考えます.
l上に点pを,m上に点qをとります.
p は l上にあるのでsをパラメータとして p = a + s da と書けます.同様にq は m上にあるのでtをパラメータとして q = b + t db と書けます.次にpq = q
- pとすると pq = (b + t db)
- (a + s da)
= b - a + t db - s da
|pq|が最小のときpq⊥daかつpq⊥dbとなるから pq・da = 0
pq・db = 0 (・は内積記号) この2式よりsとtの2元連立方程式になるのでs,
tを出します.結局,ab=b-aとして,
s = { |db|2(ab・da) - (da・db)(ab・db) }
/ { |da|2|db|2 - (da・db)2}
t = { (da・db)(ab・da) - |da|2(ab・db) }
/ { |da|2|db|2 - (da・db)2}
と求まり, p = a + s*da q = b + t*db に代入し,|pq|が求める2直線間の距離になります. |