需要帮助合并一些矩形

时间:2017-09-04 18:36:51

标签: algorithm merge rectangles

Screenshot of what I have (on the left) and what I'm trying to accomplish (on the right)

嗨,我左边有乱七八糟的混乱,它几乎是一些带有一些孔的矩形(用红色标记)。我正在寻找一种方法来将它们组合起来,以尽可能少的矩形结束它们,并且最好使它们中的大部分尽可能接近正方形。看看右边的图片,这是我想要完成的事情,只是更漂亮一点,最好更自动一点。

我需要这个用于游戏而且它不会在运行时完成,因此速度并不是真正的问题(除非它非常慢,因为我必须在相当大的时候做到这一点)但我以前从来没有做过这样的事情,老实说我也不知道从哪里开始。

我已经尝试过强行通过阵列,从左上角的方块开始,然后进行合并,直到没有任何东西可以合并,但它真的不是那么有效,因为它可以'考虑合并矩形3x2,4x3等。

如果您能指出任何可以处理此类事情的算法,或者想知道如何实现这一点,那将非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

你可以试试贪心算法。当然,它不会是最优的(好吧,你没有严格定义最优性标准)。但也许它的表现足以满足您的需求。

所以你可以尝试:

  • 找到一对可以与最大总面积合并的矩形
  • 用新的替换它们 - 合并操作的结果
  • 重复,直至找不到合适的一对

如果您还关心结果矩形接近正方形,您可以尝试使用{0}的合适值来最大化a * totalArea + (1 - a) * (min_resulting_side/max_resulting_side)之类的值。 a< 1。