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

Math 方形栅格-(旋转)矩形相交-计算所有相交单元,math,grid,geometry,Math,Grid,Geometry,我们有正方形网格,单元格宽度和高度为1.0 网格可以是任何大小,在本例中为25x25 现在有一个矩形(或一条有厚度的线),它有任意的起点和终点,例如起点(2.2,1.0)终点(20.4,5.5),厚度1.5。起点和终点位于矩形线的中心,因此该线两侧的厚度相等 如何计算该矩形与之相交的所有单元格坐标?要枚举细线情况下的所有相交单元格,有Amanatides和Woo的方法。 实际执行 对于粗线,您可以选择矩形的两条平行边,并通过某个坐标(X或Y)同步穿过它们,在每一步获得整个扫描线 对于您的情况(任

我们有正方形网格,单元格宽度和高度为1.0

网格可以是任何大小,在本例中为25x25

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


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

要枚举细线情况下的所有相交单元格,有Amanatides和Woo的方法。
实际执行

对于粗线,您可以选择矩形的两条平行边,并通过某个坐标(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