主題
Search

點線距離——三維


PointLineDistance3D

假設三維空間中的一條直線由兩個點 x_1=(x_1,y_1,z_1)x_2=(x_2,y_2,z_2) 確定,則沿該直線的向量由下式給出

 v=[x_1+(x_2-x_1)t; y_1+(y_2-y_1)t; z_1+(z_2-z_1)t].
(1)

因此,直線上引數為 t 的點與點 x_0=(x_0,y_0,z_0) 之間的平方距離為

 d^2=[(x_1-x_0)+(x_2-x_1)t]^2+[(y_1-y_0)+(y_2-y_1)t]^2+[(z_1-z_0)+(z_2-z_1)t]^2.
(2)

為了最小化距離,令 d(d^2)/dt=0 並求解 t 以獲得

 t=-((x_1-x_0)·(x_2-x_1))/(|x_2-x_1|^2),
(3)

其中 · 表示點積。然後可以透過將 t 代回 (2) 來找到最小距離,從而獲得

d^2=(x_1-x_0)^2+(y_1-y_0)^2+(z_1-z_0)^2+2t[(x_2-x_1)(x_1-x_0)+(y_2-y_1)(y_1-y_0)+(z_2-z_1)(z_1-z_0)]+t^2[(x_2-x_1)^2+(y_2-y_1)^2+(z_2-z_1)^2]
(4)
=|x_1-x_0|^2-2([(x_1-x_0)·(x_2-x_1)]^2)/(|x_2-x_1|^2)+([(x_1-x_0)·(x_2-x_1)]^2)/(|x_2-x_1|^2)
(5)
=(|x_1-x_0|^2|x_2-x_1|^2-[(x_1-x_0)·(x_2-x_1)]^2)/(|x_2-x_1|^2).
(6)

使用向量四重積

 (AxB)^2=A^2B^2-(A·B)^2
(7)

其中 x 表示叉積,則給出

 d^2=(|(x_2-x_1)x(x_1-x_0)|^2)/(|x_2-x_1|^2),
(8)

取平方根得到美麗的公式

d=(|(x_2-x_1)x(x_1-x_0)|)/(|x_2-x_1|)
(9)
=(|(x_0-x_1)x(x_0-x_2)|)/(|x_2-x_1|)
(10)
.
(11)

這裡,分子是點 x_0x_1x_2 形成的三角形面積的兩倍,分母是三角形底邊之一的長度,這可以從通常的三角形面積公式 Delta=bd/2 得出。


另請參閱

共線, , , 點線距離——二維, 三角形面積

使用 探索

請引用為

魏斯坦, 埃裡克·W. "Point-Line Distance--3-Dimensional." 來自 —— 資源。 https://mathworld.tw/Point-LineDistance3-Dimensional.html

主題分類