3D 공간을 임의의 축 정렬 상자 모양으로 나누는 방법이 필요합니다. 현재 테스트 목적으로 2D 공간을 나누고 있습니다. 내가 찾은 가장 즉각적인 접근 방식은 크기 (1, 1)의 사각형을 정의한 다음 기존의 모든 사각형을 X와 Y 사이를 번갈아 가며 두 개의 고르지 않은 사각형으로 재귀 적으로 분할하는 것입니다.
여기서 문제는 명백하다. 이 방법으로 긴 줄이 길게 표시됩니다 (빨간색으로 표시)
내가 원하는 것은 더 유기적으로 보이는 것입니다 (예를 포함했습니다)
위쪽에서 아래쪽으로 또는 왼쪽에서 오른쪽으로 긴 직선이 없습니다.
유일한 제약은 크기의 입도에 영향을 미치지 않고 사각형의 최소 크기를 제한하고 싶을 수 있습니다. 즉, 가장 작은 rect가 초보다 1 평방 센티미터 인 경우 가장 작은 방은 2 평방 단위가 아니어야합니다.
따라서 이상적으로 알고리즘은 다음 세 가지 제약 조건을 모두 충족해야합니다.
- 사각형은 무한히 작지 않습니다.
- 사각형 크기는 가장 작은 사각형 크기의 이산 곱셈이 아닙니다. 즉, 가장 작은 rect가 3 square unit보다 큰 rect는 6, 9, 12 등으로 제한되지 않으며 대신에 그 문제에 대해 3.2 또는 4.7이 될 수 있습니다.
- 알고리즘은 다항식 시간으로 실행됩니다 (빠른 계산이 필요함).