用正交二维网格相交平行线

时间:2012-11-18 23:07:33

标签: algorithm geometry intersection

我有两条可以向任何方向前进的平行线。保证不一样。

我有一个2D网格(非整数坐标从0.0到1.0,但我怀疑这可以通过缩放整个问题来解决),以通常的方式正交对齐。

我需要一种算法来生成所有正方形的列表,其中包含两行之间的任何区域。

我当前的算法非常低效(将两行表示为旋转的矩形,然后测试每个方块上的多边形 - 多边形交集)。它有效,但它的速度非常慢。

1 个答案:

答案 0 :(得分:2)

如果您知道两条线的方向和位置,那么您可以使用Bresenham线算法(参见en.wikipedia.org/wiki/Bresenham's_line_algorithm)来计算将被“触及”的所有“正方形”任何一条线。添加中间方块将是一项简单的工作。如果这两条线由一个整数的“正方形”分开,那么你只需要为其中一个解决Bressenham,但是如果它们有非整体分离,你将不得不为它们两个(后者也能工作)即使线条不平​​行)。