如何将矩形区域划分为较小的矩形,表示总面积的百分比?

时间:2013-08-15 14:51:52

标签: algorithm geometry

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

Disk Inventory X

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

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

  2. 我需要的只是一些矩形。我不需要他们有一些预定义的比例,只是他们看起来像一个矩形。正方形和3:1宽度/高度(或高度/宽度)之间的任何东西都可以。非常天真的方法是将封闭矩形的宽度除以封闭矩形所具有的百分比,但这将创建薄切片,一些较小百分比的矩形将下降1px。

  3. 我需要找到一种方法来分割多行的矩形。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

这种方法可以保证小矩形始终覆盖初始矩形。那么通过在现有矩形集内构造矩形开始的任何其他方法也是如此。

  1. 从平面的一条边到相对边绘制一条直线,并与另外两条边平行。将它画在一个产生2个矩形的位置,其比例令人赏心悦目。
  2. 如果您想要另一个矩形,请从​​第一条直线绘制一条直线,并将该直线延伸到平面的边缘。再次,选择它的位置,使线条创建令人愉悦的比例的矩形。现在你有3个矩形。
  3. 现在,要获取第四个矩形,请选择一条现有线条开始并绘制一条垂直于它的直线,直到它到达平面边缘或现有直线。同样,请注意确保所创建的矩形的比例令您满意。
  4. 继续,直到您拥有所需的所有矩形。
  5. 我个人认为以上是容易的部分,困难的部分是在算法上确定绘制线的位置。我建议您考虑the Golden Ratio,表兄弟the Fibonnaci numbers和其他比例,例如A系列纸张尺寸的基础, 1:sort(2)