2016-03-03 95 views
0

我們有正方形格子的1.0正方形網格 - (旋轉)矩形相交 - 計算所有交點細胞

小區的寬度和高度的網格可以是任何大小的,讓我們說25×25的這個例子。

現在有一個矩形(或一個厚度線),它有一個任意的開始和結束點,例如,起點(2.2,1.0)終點(20.4,5.5),厚度1.5。起點和終點位於矩形線的中心,因此線的兩側厚度均勻擴展。

如何計算矩形與該矩形相交的所有單元座標?

回答

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