2014-10-10 1 views
0

저는 매우 부드러운 다각형을 가지고 있습니다. 예를 들어, 직선이 다각형과 직선으로 바뀐 타원을 말합니다. 가능한 한 직사각형을 거의 사용하지 않고 폴리곤의 작은 모서리에서 정확성을 유지하기 위해이 폴리곤을 채우고 싶습니다. 직사각형의 크기 및 크기는 제한되지 않습니다.다각형을 직사각형으로 채우기

이 이유는 다각형의 웹 페이지에서 히트 테스트를 수행하기 때문입니다. 유일한 실제적인 방법은 div로 채우고 모든 div에서 적중 테스트를하는 것입니다.

당연히 모든 직사각형의 최소 정사각형 크기가 있습니다. 단지 다각형을 근사하고 픽셀 크기 직사각형으로 다시 만드는 것이 아닙니다.

+0

이것은 [다각형의 지점] (http://en.wikipedia.org/wiki/Point_in_polygon) 문제의 인스턴스 인 것 같습니다. – user2878850

답변

0

일반적으로 정확히을 직사각형이있는 디지털 모양으로 나타내려면 윤곽선을 형성하는 모서리에 픽셀만큼 많은 사각형이 있어야합니다. 디지털 직선을 45 °로 생각하면 픽셀 당 하나의 직사각형을 의미합니다. 이것은 심각한 한계입니다. (그리고 디지털 이외의 모양을 생각하지 마십시오.)

이것은 특정 오류로 모양을 대략적으로 받아들이므로 다음과 같이 상수 요소로 모양을 축소하는 것이 좋습니다. 모든 타일이 모양에 속하는지 여부를 결정하기 위해 모양에 격자를 오버레이합니다. 이렇게하면 "큰 픽셀"을 가진 이진 이미지에서 모양을 바꿀 수 있습니다. 이제이 이미지를 사각형으로 분해해야합니다 (정확하게 이번에는).

전적으로 맞는 큰 직사각형을 찾은 다음 남은 부분을 가지고 반복하는 간단한 그리 디 전략을 제안합니다.

크고 더 큰 직사각형 구조 요소를 사용하여 morphological erosion 조작을 적용하면 모양 이미지에서 가장 큰 직사각형을 찾을 수 있습니다. 이론 상으로는 폭과 높이의 모든 조합을 시도하고 가장 큰 영역 또는 둘레를 유지해야합니다. 이것은 많은 양의 일입니다. 자라는 사각형을 먼저 시도해보고 가장 큰 사각형을 찾으면 그 방향으로 계속할 것을 권장합니다.

큰 직사각형을 찾으면 모양 이미지에서 지우고 완전히 지울 때까지 다시 시작하십시오.

관련 문제