我试图在一系列凸多边形而不是路点上使用路径查找。为了使这更加复杂,多边形由用户制作,并且可能具有不一致的顶点。例如:
我们知道物体是Y深X宽,并且多边形在某些位置具有顶点。是否有一种特定的算法可以找到最快的目标方式,同时保持整个对象在多边形中(如果我理解正确,A *只适用于航点)?如何处理不是同一个对象但位于同一位置的顶点?
编辑:多边形是凸的;它是2个独立的多边形,边缘在线上。 另外,如何实现*寻路,因为基于节点的系统不会在无限的情况下工作。分辨率多边形?
答案 0 :(得分:4)
通常,所有最短路径段都将具有多边形顶点或起点和目标点作为终点。如果构建一个包含所有这些段的图形(从开始到每个“可见”多边形顶点,从目标到每个“可见”多边形顶点,从每个多边形顶点到每个其他多边形顶点)并在其上运行A * ,你有最佳路径。为A *构建图表的成本是:
如果您只打算申请A *一次,那么为单次遍历构建A *图的固定部分的价格可能会有些陡峭。另一种方法是在使用时逐步构建图形:
可以找到实现上述方法的Java代码here。
答案 1 :(得分:2)
绘图中的多边形不是凸面。对于凸多边形,您可以在每个边的中间放置一个路点,然后应用A *。当然,您需要修复不一致的顶点。