6

我正在研究一种基于 Theta* 的寻路算法,它是 A* 的一种变体,它提供了一个不受网格约束的良好寻路系统,即使地形/障碍物是基于网格图案的。该系统需要一种视线算法来确定特定路径是否被阻挡。

我发现这个非常有用的视线算法,并且我已经在我的代码中成功地实现了它。不幸的是,它认为以下是无效路径:

网格

但是,出于我的目的,我希望这样的路径被认为是有效的。我试图通过使用基本公式检测一个点是否在线上来修改算法y = mx + b,但是算法的不一致使我无法依赖这样的系统。

有没有有效的方法来修改这个算法以允许这样的路径?是否有另一种更好的算法?请记住,路径的起点和终点不一定限于网格,因此所有点都使用double精度。

4

1 回答 1

4

您引用的代码实际上省略了明确处理线穿过网格点(四个正方形接触)的情况。您需要检查error == 0.

在这种情况下,接触网格点的四个方格中最多有一个方格可能被阻挡以仍然具有有效路径。

问候, 埃里希

于 2012-07-02T13:16:16.890 回答