2011-11-09 16 views
0

私はゲームプログラミングにはまったく新しいので、私は年齢の古いGamePanelをC#で再現したかったのです。汚れた四角形を組み合わせるためのアルゴリズム

汚れた領域を表す2つ以上の矩形を取り、選択した領域のみを再塗りつぶすために1つに結合する既知のパフォーマンスアルゴリズムがあるのだろうかと思いましたか?

+2

交差した矩形を別々に再ペイントするための追加コストは、交差が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 
} 

あなたはしかし、最初の矩形の交差点をチェックすることをお勧めします。こうすることで、重なり合わない矩形を組み合わせることを避けることができます。

関連する問題