主题
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.net.cn/Point-LineDistance3-Dimensional.html

主题分类