用于组合脏矩形的算法

时间:2011-11-09 07:07:18

标签: c# algorithm

我是游戏编程的新手,我想在C#中再次展现出古老的GamePanel。

我想知道是否有任何已知的高性能算法采用两个或多个代表脏区的矩形并将它们合并为一个,以便仅重新绘制选定区域?

1 个答案:

答案 0 :(得分: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
}

然而,您可能首先要检查矩形交叉点。这样就可以避免组合完全不重叠的矩形。