2011-11-09 45 views
0

我對遊戲編程的適度新穎,並且我想在C#中再次展現年齡已久的GamePanel。用於組合髒矩形的算法

我想知道是否有任何已知的性能算法採用兩個或多個代表髒區域的矩形並將它們合併爲一個,僅用於重新繪製選定區域的目的?

+2

分別重新繪製相交矩形的額外成本是交集重繪兩次。重新組合矩形的額外成本是一些額外的區域被不必要地重新繪製。每個矩形合併都應考慮合併成本,如果成本高於收益,則取消合併。 – Dialecticus

回答

0

您可以使用類似這樣:

// Computes the coordinates of the rectangle smallest 
// rectangle emcompassing all given rectangles 
int minX, minY, maxX, maxY; 
minX = minY = MAX_INT; 
maxX = maxY = -MAX_INT; 
loop over all rectangles in var rect { 
    if(rect.minX < minX) 
     minX = rect.minX 
    if(rect.minY < minY) 
     minY = rect.minY 
    if(rect.maxX > maxX) 
     maxX = rect.maxX 
    if(rect.maxY > maxY) 
     maxY = rect.maxY 
} 

您可能要檢查矩形交集第一但是。這樣可以避免組合不重疊的矩形。