4

基本上我试图得到一个“漂亮”的图像,其中所有的小矩形加起来都是大矩形,有点像:

磁盘清单 X

*稍后编辑以澄清一些事情:

  1. 我希望能够在一个软件中画出这样的东西。所以,我需要的是更接近算法。

  2. 我只需要一些矩形。我不需要它们有一些预定义的比例,只是它们看起来像一个矩形。正方形和 3:1 宽度/高度(或高度/宽度)之间的任何东西都可以。极其幼稚的方法是将封闭矩形的宽度除以封闭矩形的百分比,但这会创建薄片,并且一些较小百分比的矩形将下降到 1px 以下。

我需要找到一种方法将矩形拆分为多行。

*第二次编辑:问题已解决。我正在寻找 TreeMap 算法(如Phpdna所指出的)。一旦我有了关键字,我就能快速找到几个满足我要求的 python 实现。

4

2 回答 2

3

Treemap 是一种可以将较小的矩形打包成地图的算法。您可以递归地将平面细分为更小的图块,例如通过沿 2 轴拆分平面并将结果保存到树中。

于 2013-08-15T15:44:36.200 回答
-1

这种方法保证小矩形总是覆盖初始矩形。任何其他从在现有矩形集中构造矩形开始的方法也是如此。

  1. 从平面的一个边到另一边画一条直线,并平行于另外两条边。将其绘制在一个产生 2 个比例令人满意的矩形的位置。
  2. 如果你想要另一个矩形,从第一条线开始画一条线,垂直于它,然后将该线延伸到平面的边缘。再次,选择它的位置,使线条创建出令人愉悦的比例的矩形。现在你有 3 个矩形。
  3. 现在,要获得第 4 个矩形,请选择一条现有线作为起点,并绘制一条垂直于它的线,直到它到达平面边缘或现有线。同样,请注意确保创建的矩形的比例令人赏心悦目。
  4. 继续,直到你拥有所有你想要的矩形。

我个人认为以上是容易的部分,困难的部分是通过算法确定在哪里画线。我建议您考虑黄金比率,它与斐波那契数和其他比率类似,例如 A 系列纸张尺寸的基础, 1:sort(2).

于 2013-08-15T15:01:27.450 回答