【发布时间】:2019-04-06 13:47:10
【问题描述】:
我正在 3D 数据网格上运行 A* 路径查找。可用的移动是 26 个周围节点(即你可以对角移动)我一直使用欧几里德距离作为启发式,这很好用,但我也想尝试“对角距离”来看看它是如何工作的(如果有任何速度增益)
我在网上找到了一些在二维中执行此操作的逻辑...
function heuristic(node) =
dx = abs(node.x - goal.x)
dy = abs(node.y - goal.y)
return D * (dx + dy) + (D2 - 2 * D) * min(dx, dy)
..,其中 D 是北/东/南/西距离(例如 1m),D2 是对角线距离(例如 sqrt(2))
我不确定如何将其转换为 3 维 - 所以任何帮助将不胜感激
作为一个额外的问题(因为这实际上是多少网格......)假设 x 和 y 轴上的节点相距 5m,但 z 轴上相距 2m...那么公式将如何工作?
感谢您的帮助!
【问题讨论】:
-
我的猜测是,沿对角线移动 3 直到 X、Y 或 Z 都正确,然后它会演变为 2D 问题(上图)。
标签: python path-finding a-star heuristics