2
查找哪些瓷砖与一条线相交,而无需遍历所有瓷砖或跳过任何瓷砖
我已经盯着这个问题几天了。我整理了此图形以帮助我直观地看到问题:( 从图形中我们知道线与[1,1],[1,2],[2,2],[2,3]相交,以[ 3,3]) 我想沿着直线移动到每个网格空间,并检查网格空间的材质是否牢固。我觉得我已经知道所涉及的数学,但是我还不能将其组合在一起。我正在使用它来测试视线并在通过我的寻路算法找到路径后消除节点-我的代理无法看到实体块,因此它们无法通过实体,因此不会从路径中消除该节点,因为它需要导航一个角。 因此,我需要一种算法,该算法将沿着直线移动到它相交的每个网格空间。有任何想法吗? 我看了很多常见的算法,例如布雷森汉姆算法,以及沿着线以预定间隔步进的算法(不幸的是,如果它们与比步长小的楔形相交,则此方法会跳过这些图块)。 我现在用大量floor()和ceil()函数填充我的白板-但是它变得过于复杂,我担心它可能会导致速度变慢。