将固定区域的矩形适合更大的矩形

时间:2017-10-30 21:19:54

标签: javascript

我有一个10 * 10的大矩形,面积为100.我正在寻找一种适合的方法,例如:固定区域的6个矩形到10 * 10的区域。

6个矩形具有固定的区域,但没有固定的宽度/高度。他们的区域总是加起来100,所以它实际上是较大区域的百分比。

我不希望有一行只是改变每个矩形的宽度。我想要一种方法,以最有效的方式放置矩形,尽量使它们尽可能接近正方形。

谢谢。

-Solved -

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,所以我只举一个简单易懂(如果效率不高)的方法,它仍然可以提供相当不错的结果。

  1. 首先订购从最大到最小的盒子。
  2. 假设你的第一个盒子将是正方形(它不会以那种方式结束,但它将结束)。取sqrt(area[1])得到它的长度。将宽度作为第一列所需的宽度。
  3. 根据宽度,在该列中填充尽可能多的行。
  4. 添加您在列中放置的总面积;调整其宽度以匹配(现在它会变得更薄)。
  5. 对其余可用框重复步骤1-3。当你到达列中第一个框的目标宽度比你剩下的空间宽的点时,只需使用那个宽度。
  6. 其余的盒子应该干净利落地放入该栏中的剩余空间。
  7. 这将为您提供对齐的列,具有不同的高度分割。作为替代方案,您可以翻转“row”和“column”以获得具有不同列拆分的常量行划分。