无论如何,是否允许我找到线和网格之间的所有交点? (交叉圆圈不是按比例绘制的,我知道)
蛮力方式是计算x-y
网格与线的非常交集,但此算法非常低效(O(m*n)
,其中m
是{{1}的数量网格和x
是n
网格的数量。
我正在寻找更好的算法。
答案 0 :(得分:6)
听起来您需要Digital Differential Analyzer或Bresenham's line algorithm。 Bresenham与用于在位图上绘制线条的算法相同;在这种情况下,着色像素等同于检查该方块中的碰撞。
答案 1 :(得分:6)
我不确定我是否真的理解这个问题。这是你想要的任何机会吗?
答案 2 :(得分:0)
如果网格是轴对齐的:
如果网格是规则的,则每条水平线的交点之间的距离将相同。垂直线也是如此。在这种情况下,你可以用dx和dy做一个简单的迭代算法。