2024-06-26 13:52:58 发布
网友
假设你有两个数组,代表一个海域的波速和方向。速度是整数,方向是度。这些数组对应于一个经纬度区域(这并不重要)
然后,假设你想找到从A到B的最短(最快)的路径(假设直接驶入波浪会减慢你的速度,如果波速很大,速度会更慢)。你们都必须考虑到波速和波的方向
据我所见,迪克斯特拉和A*无法解决这类问题。有没有人曾经处理过类似的事情
我目前正在为python开发一个寻路库。我编辑了A*来处理这种情况。然而,它处于非常早期的开发阶段,因此可能不起作用。 而且它没有医生。要使用它,只需创建一个集群witch,它是处理所有PathFinder的基本类
SIZE = 10 arr = np.ones((1, SIZE, SIZE), dtype=np.int) clus = pypathing.nodeGraph.Cluster() clus.build(arr, pypathing.directions.fullDiagonal)
其中pathfinding.directions.fullDiagonal表示允许所有对角线移动(在这种情况下我建议使用pypathing.directions.noDiagonal,但也可以使用pypathing.directions.noDiagonal不使用任何对角线移动)
pathfinding.directions.fullDiagonal
pypathing.directions.noDiagonal
然后,可以通过以下方式获得连接2个簇的边:
e = clus.getEdge(clus.getnode((0,0,0)), clus.getnode((0,0,1)))
然后,您可以使用此设置电流在clus.getnode((0,0,0))到clus.getnode((0,0,1))方向上的速度
clus.getnode((0,0,0))
clus.getnode((0,0,1))
e.nodeMoves = 1
而不仅仅是通过以下方式获得路径:
clus.runAstar(start, end, speed=1)
其中start是起始节点,end是路径的结束节点,速度是船的速度
start
end
我目前正在为python开发一个寻路库。我编辑了A*来处理这种情况。然而,它处于非常早期的开发阶段,因此可能不起作用。 而且它没有医生。要使用它,只需创建一个集群witch,它是处理所有PathFinder的基本类
其中
pathfinding.directions.fullDiagonal
表示允许所有对角线移动(在这种情况下我建议使用pypathing.directions.noDiagonal
,但也可以使用pypathing.directions.noDiagonal
不使用任何对角线移动)然后,可以通过以下方式获得连接2个簇的边:
然后,您可以使用此设置电流在
clus.getnode((0,0,0))
到clus.getnode((0,0,1))
方向上的速度而不仅仅是通过以下方式获得路径:
其中
start
是起始节点,end
是路径的结束节点,速度是船的速度相关问题 更多 >
编程相关推荐