首页 文章

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

提问于
浏览
1

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

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

1 回答

  • 2

    您没有提供自己的任何算法或代码,因此我将简单地陈述一个算法 . 如果您需要更多细节,例如数学公式或代码,请向我们展示您在问题上所做的更多工作,那么我将很乐意提供更多帮助 .

    这是一种不使用微积分但使用3D几何的算法 . 总体思路是在线DE上找到最小化路径A到B到C的点B.如果这一点在段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点进行逆刚性变换 .

    你明白吗?我现在不能向你展示那个算法的图形,虽然我可以明天做一个 . 正如我所说,展示你自己的一些作品然后我会很乐意提供更多细节 .


    我应该简要提一下其他两种方法 . 微积分方法使用路径长度表达式的导数 . 这将涉及求解仅具有一个实根的三次多项式方程 . 计算机方法使用黄金分割算法或类似的东西来近似路径长度表达式的最小值 . 选择你的毒药 . (这些方法都不容易 . )

相关问题