我的情況輸入:一組矩形每個rect都由4個double組成,例如:(x0,y0,x1,y1)它們不會以任何角度“旋轉”,它們都是相對于屏幕“上/下”和“左/右”的“普通”矩形它們是隨機放置的-它們可能在邊緣接觸,重疊或沒有任何接觸我將有數百個矩形這是用C#實現的我需要找到由它們的重疊部分形成的區域-畫布中一個以上矩形“覆蓋”的所有區域(例如,對于兩個矩形,將是交集)我不需要重疊的幾何圖形-只需面積(例如:4平方英寸)重疊不應被計算多次-例如,假設3個大小和位置相同的矩形-它們彼此重疊-該區域應被計算一次(而不是三次)例下圖包含三個矩形:A,B,CA和B重疊(如破折號所示)B和C重疊(如破折號所示)我正在尋找的是顯示破折號的區域--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA--------------BBBAAAAAAAAAAAAAAAA--------------BBBAAAAAAAAAAAAAAAA--------------BBBAAAAAAAAAAAAAAAA--------------BBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB BBBBBB-----------CCCCCCCC BBBBBB-----------CCCCCCCC BBBBBB-----------CCCCCCCC CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCC
3 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
一種解決方法是將其繪制到畫布上!使用半透明顏色繪制每個矩形。.NET運行時將使用優化的本機代碼-甚至使用硬件加速器來繪制圖形。
然后,您必須回讀像素。每個像素是背景色,矩形色還是其他顏色?它可能是另一種顏色的唯一方法是兩個或更多矩形重疊...
如果這太欺騙了,我建議像另外一個回答者一樣推薦四叉樹或r樹。
添加回答
舉報
0/150
提交
取消