0
私はゲームプログラミングにはまったく新しいので、私は年齢の古いGamePanelをC#で再現したかったのです。汚れた四角形を組み合わせるためのアルゴリズム
汚れた領域を表す2つ以上の矩形を取り、選択した領域のみを再塗りつぶすために1つに結合する既知のパフォーマンスアルゴリズムがあるのだろうかと思いましたか?
私はゲームプログラミングにはまったく新しいので、私は年齢の古いGamePanelをC#で再現したかったのです。汚れた四角形を組み合わせるためのアルゴリズム
汚れた領域を表す2つ以上の矩形を取り、選択した領域のみを再塗りつぶすために1つに結合する既知のパフォーマンスアルゴリズムがあるのだろうかと思いましたか?
あなたはそうのようなものを使用することができます。
// 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
}
あなたはしかし、最初の矩形の交差点をチェックすることをお勧めします。こうすることで、重なり合わない矩形を組み合わせることを避けることができます。
交差した矩形を別々に再ペイントするための追加コストは、交差が2度再描画されることです。結合された四角形を再描画するための余分なコストは、余分な領域が不必要に再描画されることです。長方形の各マージはマージのコストを考慮し、コストが利益よりも高い場合はマージを取り消すべきです。 – Dialecticus