我们有Square Grid,单元格宽度和高度为1.0
网格可以是任意大小,例如25x25。
现在有一个矩形(或一条有厚度的线),它有一个任意的起点和终点,例如:起点(2.2,1.0)终点(20.4,5.5),厚度1.5。起点和终点位于矩形线的中心,因此厚度在线的两侧均匀扩展。
如何计算此矩形与之相交的所有单元格坐标?
答案 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