【问题标题】:How to arrange N rectangles to cover minimum area [duplicate]如何排列N个矩形以覆盖最小面积[重复]
【发布时间】:2012-12-25 15:03:59
【问题描述】:

可能重复:
Algorithm needed for packing rectangles in a fairly optimal way

我有 N 个矩形,每个矩形的大小都是随机的(随机宽度和高度)。所有矩形都平行于 X 和 Y 轴。我正在寻找一种算法,它可以帮助我并排排列这些矩形,使生成的边界矩形具有最小面积,并且输入矩形周围/之间的潜在间隙尽可能小。矩形不能旋转,也不能相互重叠。

(我需要这些来自动排列游戏精灵,这样我就可以创建精灵表并从我从动画师那里获得的各种图像中保存精灵位置。)

例如:

+---+   +----------+
| 1 |   |    2     |
+---+   +----------+                 +----------+..           +---+----------+
                                     |    2     |..           | 1 |    2     |
+--------+                ===>       +--------+-+-+    vs     +---+----+-----+
|        |                           |        | 1 |           |        |......
|    3   |                           |    3   +---+           |    3   |......
+--------+                           +--------+....           +--------+......

                                       Unused: 8                 Unused: 18

图中未使用的空间用圆点 (.) 标记。由于第一个结果的边界矩形具有较小的未使用空间,因此最好找到输入矩形的这种排列方式。

是否已经有一种算法可以帮助解决这个问题?我做了很多谷歌搜索,但大多数结果都与查找最小边界矩形或查找 N 个矩形是否覆盖预定区域有关。

【问题讨论】:

标签: algorithm math area rectangles


【解决方案1】:

What algorithm can be used for packing rectangles of different sizes into the smallest rectangle possible in a fairly optimal way? 建议的解决方案看起来不错,但我会稍微改变一下:与其贪婪地将边界框扩展到最小区域,不如贪婪地将其扩展到最小区域 留出大于剩余的矩形。另外,按最大尺寸而不是最大面积选择下一个矩形。

这应该在早期为它提供更多空间,并防止它总是在最后一分钟用完空间并留下大部分空白的边缘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多