【发布时间】:2020-04-03 05:09:31
【问题描述】:
希望在更大的矩形中生成一些随机的矩形网格。
这看起来是一个相当简单的问题,但事实并非如此,在这里寻求建议。
这是not a packing problem,因为内部矩形可以有任何宽度和高度。
但矩形的数量并不总是相同的。
我已经有了一些不同类型的循环的结果,但没有一个是真正有效的。
例如,对于 15 个矩形,表示它们的一种可能方式是:
O 10 50 60
+----------+---------------------------------------------+----------+-------+
| | | | |
| | | | |
| | | | |
5 +----------+---------------------------------------------+----------+-------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
15+----------+---------------------------------------------+----------+-------+
| | | | |
| | | | |
| | | | |
+----------+---------------------------------------------+----------+-------+
| | | | |
| | | | |
| | ↓ | | |
+----------+---------------------------------------------+----------+-------+
坐标将类似于每个内部正方形左上角 (+) 的 [x,y] 点数组:
[[0,0],[10,0],[50,0],[60,0],[5,0],[5,10],[5,50], ...]
或者更好的是 [x,y,w,h] 值数组(左上角 x,左上角 y,宽度,高度)
[[0,0,10,5],[10,0,40,5],[50,0,10,5],[60,0,10,5],[5,0,10,10],[5,10,40,10],[5,50,20,10], ...]
但我们的目标是创建一个为任意数量的内部正方形生成坐标的函数:
例如,对于 14 个矩形,表示它们的可能方式是:
+----------+----------------------------------+---------------------+-------+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
+----------+----------------------------------+----------+----------+-------+
| | | | |
| | | | |
+----------+--------+------------------------------------+----------+-------+
| | | | |
| | | | |
+-------------------+-----------+------------------------+----------+-------+
| | |
| | |
| | |
| | |
+-------------------------------+-----------------------------------+-------+
相关链接:
【问题讨论】:
-
所以唯一的限制是有 n 个矩形,并且它们完全按照给定的宽度和高度平铺外部矩形?
-
当然。具有良好的结构。以一些斐波那契比例为例。你怎么看?
标签: php algorithm rectangles packing