Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修改此视线算法以接受通过角的光线?_Java_Algorithm - Fatal编程技术网

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

Java 如何修改此视线算法以接受通过角的光线?,java,algorithm,Java,Algorithm,我正在研究一种基于Theta*的寻路算法,Theta*是a*的一种变体,它为寻路提供了一个良好的系统,不受网格限制,即使地形/障碍物基于网格模式。该系统需要一种视线算法来确定特定路径是否受到阻碍 我发现了非常有用的视线算法,并在代码中成功地实现了它。不幸的是,它认为以下路径无效: 然而,出于我的目的,我希望这样一条路径被认为是有效的。我试图通过使用基本的y=mx+b公式检测一个点是否在线路上来修改算法,但算法的不一致性使我无法依赖这样的系统 是否有任何有效的方法修改此算法以允许这样的路径?有没

我正在研究一种基于Theta*的寻路算法,Theta*是a*的一种变体,它为寻路提供了一个良好的系统,不受网格限制,即使地形/障碍物基于网格模式。该系统需要一种视线算法来确定特定路径是否受到阻碍

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

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


是否有任何有效的方法修改此算法以允许这样的路径?有没有其他更有效的算法?请记住,路径的起点和终点不一定局限于栅格,因此所有点都使用双倍精度。

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

在这种情况下,接触网格点的四个正方形中最多有一个可能被阻挡,以保持有效路径

问候,,
埃里克

好吧,酷,行得通。但你能告诉我为什么会这样吗?我有点理解,但我不完全理解。对,我明白了,但是你能详细说明一下
错误
值的一般作用吗?从我所看到的,只要略过你引用的源(最后一节使用整数数学),当通过一个网格点时,服务水平实际上被分成两个(或更多)相似的段。正如作者所指出的,他的算法总是从这样一个交点垂直移动。