Python在3D中的点和线段之间的最短距离以及该段上的交点

问题描述 投票:0回答:1

我正在寻找3D中点与线段之间的最短距离与线段上的相交点的python实现

python distance
1个回答
0
投票
这里是使用numpy的实现:

def min_distance(r: np.ndarray, a: np.ndarray): """ Compute the minimal distance between a point and a segment. Given a segment of points xa and xb and a point p Parameters ---------- r xb - xa a xa - p Returns ------- d The minimal distance spanning from p to the segment """ min_t = np.clip(-a.dot(r) / (r.dot(r)), 0, 1) d = a + min_t * r return np.sqrt(d.dot(d))

说明


给出一个段,该段由两个点xaxb以及一个通用点p标识。我们定义以下数量

“

段上的通用点,具有坐标:

“

因此,点p与线段上通用点的距离为:

“

我们希望最小化平方距离(我们使用平方距离使计算更容易一些)

“

“

“

这为我们提供了使距离最小化(实际上使静止)的t值。

enter image description here

现在,我们需要记住,我们必须保持“ 0“,因此可以钳位[]。

计算t将给出最小距离。

该距离将是返回的d(t_min)d或等价的np.linalg.norm(d)的范数。

“

np.sqrt(d.dot(d))

© www.soinside.com 2019 - 2024. All rights reserved.