0
저는 게임 프로그래밍에 익숙하지 않고 C#에서 오래된 GamePanel을 다시 가져오고 싶습니다.더러운 직사각형을 결합하는 알고리즘
선택한 영역 만 다시 그리는 목적으로 더티 영역을 나타내는 두 개 이상의 직사각형을 하나씩 결합하는 알려진 퍼포먼스 알고리즘이 있는지 궁금합니다.
저는 게임 프로그래밍에 익숙하지 않고 C#에서 오래된 GamePanel을 다시 가져오고 싶습니다.더러운 직사각형을 결합하는 알고리즘
선택한 영역 만 다시 그리는 목적으로 더티 영역을 나타내는 두 개 이상의 직사각형을 하나씩 결합하는 알려진 퍼포먼스 알고리즘이 있는지 궁금합니다.
당신은 너무 같은 것을 사용할 수 있습니다
// 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
}
당신은 그러나 최초의 구형 교차로를 확인 할 수 있습니다. 이렇게하면 전혀 겹치지 않는 사각형을 결합하는 것을 피할 수 있습니다.
교차 된 직사각형을 별도로 다시 칠하는 데 드는 추가 비용은 교차점을 두 번 다시 그립니다. 결합 된 사각형을 다시 그리는 데 드는 추가 비용은 불필요하게 일부 영역을 다시 그리는 것입니다. 직사각형의 모든 병합은 병합 비용을 고려해야하며 비용이 이익보다 높으면 병합을 취소해야합니다. – Dialecticus