线段上3点之间的最短距离

时间:2018-07-05 18:47:46

标签: math 3d line distance

我目前正在研究导航网格物体的寻路算法。跳过细节,我需要找到一种算法来找到沿线段的三个点之间的最短距离。

从点A到点B到点C的路径很多。A和C是3D空间中的固定点。 B是位于线段DE某处的点。 B的哪个位置可以最小化ABC路径的距离?

1 个答案:

答案 0 :(得分:2)

您不提供任何自己的算法或代码,因此我将仅概括地说明一种算法。如果您需要更多详细信息,例如数学公式或代码,向我们展示您在此问题上所做的更多工作,那么我将很乐意为您提供更多帮助。

这是一种无需演算但使用3D几何的算法。总体思路是在 line DE上找到B点,以将A到B到C的路径最小化。如果这是在 segment DE上,那就是您的答案。如果该点超出D,则D是您的答案,如果该点超出E,则E是您的答案。

要找到DE线上的B点,请考虑从A点到DE的高度以及从C点到DE的高度。现在绕着线DE旋转点C,使新点C'与点A和线DE在同一平面上,但在与点A相对的线的另一侧。现在找到线段AC'和线DE的交点-当然是一个。该交点是DE线上的B点。

通过对3D空间进行刚性转换,将点D放置在原点,将点E放置在正x轴上,将点A放置在x轴上方的上半平面上,所有这些操作将变得更加容易。然后,您将找到所需的点,然后在点B上进行刚性逆变换。

您了解吗?我现在无法向您显示该算法的图形,尽管我明天可以弥补。正如我说的,展示一些您自己的作品,那么我将很乐意提供更多细节。


我应该简要提及另外两种方法。微积分方法使用路径长度表达的导数。这将涉及求解只有一个实根的三次多项式方程。一种计算机方法使用黄金分割算法或类似方法来近似路径长度表达式的最小值。选择你的毒药。 (这些方法都不是很简单。)

相关问题