我需要一种将3d空间划分为随机轴对齐的盒子形状的方法。目前,我目前正在划分2d空间用于测试目的。我想到的最直接的方法是定义一个大小为(1,1)的矩形,然后将所有现有矩形递归地分成两个在X轴和Y轴之间交替的不平坦矩形。
这里的问题很明显。这种方法会导致拉伸线变长(以红色标记)
我想要的是更自然的外观(我提供了一个示例)
看,从上到下或从左到右没有长的直线。
唯一的限制是我可能希望限制矩形的最小大小,而不影响大小的粒度。也就是说,如果最小的rect是1平方厘米,而不是秒,则最小的房间不应是2平方单位。
因此,理想情况下,算法应满足以下三个约束:
- 矩形不是无限小。
- 矩形尺寸不是最小矩形尺寸的离散乘积。也就是说,如果最小的rect是3平方单位,则不将较大的rect约束为6、9、12等正方形单位,因此可以是3.2或4.7。
- 该算法以多项式时间运行(需要快速计算)。