3Dスペースをランダムな軸で整列したボックスの形状に分割する方法が必要です。とりあえず、テストのために2Dスペースを分割しています。私が思いついた最も直接的なアプローチは、サイズ(1、1)の長方形を定義し、既存のすべての長方形をX軸とY軸が交互に並ぶ2つの不均一な長方形に再帰的に分割することでした。
ここでの問題は明白です。このアプローチでは、長いストレッチ線(赤でマーク)が発生します。
私が望むのは、もっと有機的な見た目です(私は例を含めました)
見てください、上から下へ、または左から右への長い直線はありません。
唯一の制約は、サイズの粒度に影響を与えずに、長方形の最小サイズを制限したい場合があることです。つまり、最小の四角形が秒より1平方センチメートル小さい場合、最小の部屋は2平方単位であってはなりません。
したがって、理想的には、アルゴリズムは次の3つの制約すべてを満たす必要があります。
- 長方形は無限に小さくはありません。
- 四角形のサイズは、最小の四角形のサイズの離散的な乗算ではありません。つまり、最小の長方形が3平方単位である場合、大きい長方形は6、9、12などの正方形単位に制限されず、代わりに3.2または4.7になります。
- アルゴリズムは多項式時間で実行されます(高速で計算する必要があります)。