我正在研究一种基于 Theta* 的寻路算法,它是 A* 的一种变体,它提供了一个不受网格约束的良好寻路系统,即使地形/障碍物是基于网格图案的。该系统需要一种视线算法来确定特定路径是否被阻挡。
我发现这个非常有用的视线算法,并且我已经在我的代码中成功地实现了它。不幸的是,它认为以下是无效路径:
但是,出于我的目的,我希望这样的路径被认为是有效的。我试图通过使用基本公式检测一个点是否在线上来修改算法y = mx + b
,但是算法的不一致使我无法依赖这样的系统。
有没有有效的方法来修改这个算法以允许这样的路径?是否有另一种更好的算法?请记住,路径的起点和终点不一定限于网格,因此所有点都使用double
精度。