我有一个10*10的大矩形,面积为100。我正在寻找一种方法来适应,例如:将固定区域的6个矩形放入10*10的区域中。
这 6 个矩形有固定的面积,但没有固定的宽度/高度。它们的面积总和为 100,因此它实际上是较大面积的百分比。
我不想有 1 行,只需更改每个矩形的宽度。我想要一种以最有效的方式放置矩形的方法,尽量使它们尽可能接近正方形。
谢谢。
-已解决-
最佳答案
有几种方法可以做到这一点,因此我将仅给出一个简单易懂(虽然有些低效)的方法示例,但该方法仍应给出相当不错的结果。
- 首先按照从大到小的顺序对盒子进行排序。
- 假设您的第一个盒子将是正方形(它不会以这种方式结束,但会以闭合的方式结束)。使用
sqrt(area[1])
获取其边长。将该宽度作为您想要的第一列的宽度。 - 给定该宽度,在该列中填充尽可能多的行。
- 将您在该列中放置的总面积相加;调整其宽度以匹配该宽度(现在会更薄一些)。
- 对其余可用框重复步骤 1-3。当列中第一个框的目标宽度比剩余空间宽时,只需使用该宽度即可。
- 剩余的方框应完全适合该列中的剩余空间。
这将为您提供对齐的列,并具有不同的高度划分。作为替代方案,您可以翻转“行”和“列”以获得具有不同列分割的恒定行分割。
关于javascript - 将固定面积的矩形拟合成更大的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47024331/