如何修改此视线算法以接受穿过角落的光线?

Ale*_*ing 6 java algorithm

我正在研究一种基于Theta*的寻路算法,这是A*的一种变体,它提供了一个很好的寻路系统,即使地形/障碍物都是基于网格模式,也不会限制在网格中.该系统需要视线算法来确定特定路径是否被阻挡.

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

格

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

有没有有效的方法来修改此算法以允许这样的路径?还有其他算法会更好吗?请记住,路径的起点和终点会不会不一定限于一个网格,因此所有点使用double精度.

Eri*_*ner 4

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

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

问候,埃里希