二维寻路绕墙

2d pathfinding around walls

在最近发布的 game 中,角色在 2d 火星表面周围(很差)导航执行任务。我正在尝试提出一个更好的算法(只是为了好玩)。如果可以有效地构造 "edges",则可以使用像 A* 搜索这样的算法。

问题:给定一组不相交的线和两个点,起点和终点,找到不与任何线相交的最短路线。

这个问题叫做"Any angle path planning"。简短的回答是有一些方法可以在 O(n^2 log n) 时间内生成可见性图(也许更好),但是由于可见性图可能有多达 n^2 条边,使用生成 VG 的算法总是最差的case 性能比 n^2 慢。

VG 算法:Ch 13 of Computational Geometry: Algorithms and Applications by de Berg

大多数现代技术都避免生成 VG,而是牺牲正确性以获得渐近更快的结果。为有动力的人提供的一些资源: