方格 - (旋转)矩形交点 - 计算所有交点单元格

时间:2016-03-03 11:51:57

标签: math grid geometry

我们有Square Grid,单元格宽度和高度为1.0

网格可以是任意大小,例如25x25。

现在有一个矩形(或一条有厚度的线),它有一个任意的起点和终点,例如:起点(2.2,1.0)终点(20.4,5.5),厚度1.5。起点和终点位于矩形线的中心,因此厚度在线的两侧均匀扩展。

如何计算此矩形与之相交的所有单元格坐标?

1 个答案:

答案 0 :(得分:0)

要枚举所有相交单元格的细线情况,有Amanatides和Woo A Fast Voxel Traversal Algorithm for Ray Tracing的方法。
Here is实际执行。

对于粗线,您可以选择矩形的两条平行边,并通过某个坐标(X或Y)同步遍历它们,每一步都获得整条扫描线。

对于你的情况(任意坐标,可能不准确):

bottom left corner is in (2,0) cell, top left in (2,1) cell
(2,0)-(2,1) vertical scanline contains two cells
walk with bottom ray to (3,0), wait until top ray reaches X=3
walk with top ray to (2,2), add this cell to the last scanline
walk with top ray to (3,2)
(3,0)-(3,2) vertical scanline contains three cells
and so on