戻る

■点と直線の距離の求め方


点Gから直線ABに引いた垂線と直線ABの交点をHとし、線分GHの長さをdとする。
線分ABと線分AGが成す角をθ[rad]とする。
ベクトルAB:(Xab, Yab, Zab)=(Xb-Xa, Yb-Ya, Zb-Za)
ベクトルAG:(Xag, Yag, Zag)=(Xg-Xa, Yg-Ya, Zg-Za)
ベクトルABの長さ:Lab=√(Xab^2+Yab^2+Zab^2)
ベクトルAGの長さ:Lag=√(Xag^2+Yag^2+Zag^2)
内積の定義より
AB・AG=Lab*Lag*cosθ
AB・AG=Xab*Xag+Yab*Yag+Zab*Zag
∴cosθ=(Xab*Xag+Yab*Yag+Zab*Zag)/Lab/Lag ・・・(1)

正弦(sin)の定義より
sinθ=d/Lag
また、
sinθ^2+cosθ^2=1
であるから、
√(1-cosθ^2)=d/Lag ・・・ (2)

(1)、(2)より
d=Lag*√(1-(Xab*Xag+Yab*Yag+Zab*Zag)^2/Lab^2/Lag^2)
d=√(Lag^2-(Xab*Xag+Yab*Yag+Zab*Zag)^2/Lab^2)

戻る