可能是重复问题:
需要一种算法以相对最优的方式放置矩形
我有N个矩形,每个矩形的大小随机(宽度和高度随机)。所有矩形都平行于X轴和Y轴。我正在寻找一种算法,帮助我将这些矩形并排排列,使得所得到的边界矩形面积最小,并且输入矩形周围/之间的潜在间隙尽可能小。矩形不能旋转,也不能重叠。
(我需要这些来自动排列游戏精灵,以便我可以创建精灵表并保存来自动画师的各种图像中的精灵位置。)
例如:
+---+ +----------+
| 1 | | 2 |
+---+ +----------+ +----------+.. +---+----------+
| 2 |.. | 1 | 2 |
+--------+ ===> +--------+-+-+ vs +---+----+-----+
| | | | 1 | | |......
| 3 | | 3 +---+ | 3 |......
+--------+ +--------+.... +--------+......
Unused: 8 Unused: 18
在图中,未使用的空间由点(.)标记。由于第一个结果的边界矩形具有较小的未使用空间,因此最好找到此输入矩形的排列方式。
是否已经存在可帮助完成此任务的算法?我进行了大量搜索,但大多数结果都与查找最小边界矩形或查找N个矩形是否覆盖预定区域有关。