有一个网格图(平铺图)。在所有瓷砖中,有些是免费的(空的),有些是障碍物。 现在,如果我随机选择空白图块(图块 A 并平铺 B )并在它们之间绘制一个线段。 什么是最快的算法来判断此线段是否与任何障碍无冲突? (在下图中:红色瓷砖是障碍物,Line_2是无碰撞的,Line_1不是)
目前,我正在做的是从 A 到 B 进行体素遍历并检查遍历的图块是否包含障碍物?
但是有更好的解决方案吗?
答案 0 :(得分:1)
我相信,算法的速度取决于场的大小和障碍物的数量。如果场地充满障碍,你的方式非常好。
另一种方法是找到光线与瓷砖每一面的交点。
我认为如果你有一些瓷砖和很多可用空间,这种方式非常好。
UPD:此方法应通过"背面"的排除计算进行优化。所有组的瓷砖。它将减少计算量并加快例行程序。
最后,我相信,您可以在代码中使用这两种算法。您可以通过近似"密度"来选择方法。的地图。