我在Java中实现了一个基于A * pathfindinder的基本网格。我想制作一个基于导航网格/多边形的路径查找器,但我遇到的问题是:
如果我找到橙色路线,那么我可以使用类似a funnel algorithm的东西来拉直它以获得所需的路线(蓝色)。但是,如果程序计算每条路线的成本,红色和橙色,那么它会说红色路线的价格更便宜。如何编程我的A *算法和/或创建我的网格,以便不会发生这种情况。
答案 0 :(得分:4)
Computational Geometry: Algorithms and Applications中的第15章描述并解决了这个问题:可以用梯形图描述自由空间,但使用地图找到的路径不一定是最短的。推荐的表示(也在LaValle的Planning Algorithms (Section 6.2.4)中讨论过)是一个所谓的可见性图,其边缘连接障碍物的顶点。
可以从书籍主页获得伪代码和数字,Google preview也包含本章的部分内容。
答案 1 :(得分:3)
您应该查看此链接:http://alienryderflex.com/shortest_path/ 它解释了如何计算多边形内部的最短路径,非常清晰的解释和代码实现。
答案 2 :(得分:0)
很抱歉,我无法直接帮助解决您的问题,但是我们将基于多边形的路径查找器移植到haxe并且它可以编译为java(到目前为止仅尝试使用swing,但可能会很快尝试使用slick2d)并且可以集成到Java项目给出了一些研究。它被称为hxDaedalus,位于github上,可能是一个有趣的参考点。