2013-07-23 36 views
1

根据我对桶装的理解,您试图将预定尺寸和常常不同尺寸的物体装入一个或多个容器或预定固定尺寸的“容器”中。我有一个问题,我有一个固定大小的单个容器和必须适合它的固定数量的元素。区别在于我的元素不是固定的大小,但可以调整为特定的任意倍数数。例如:二维装箱的变化?

比方说,我有3个对象或元素必须在一个容器是280x420伏贴和对象必须重新调整大小到140

因此倍数,它可能适合像这样: (或垂直翻转)

+----------+----------+ 
| 140x140 | 140x140 | 
|   |   | 
|   |   | 
+----------+----------+ 
| 280x280    | 
|      | 
|      | 
|      | 
|      | 
+---------------------+ 

或:(或水平翻转)最终,每个盒子的大小将被动态地确定基于ST

+----------+----------+ 
| 140x210 | 140x420 | 
|   |   | 
|   |   | 
|   |   | 
+----------+   | 
| 140x210 |   | 
|   |   | 
|   |   | 
|   |   | 
+----------+----------+ 

atistics。 (例如,如果一个项目的统计量是90%,而另外两个统计量的统计量是2%和8%,那么显然这个90%会得到更大的框。)但是,我试图不过度复杂化它只是现在,所以创建一个算法来填充容器是我的主要目标。

我一直在研究不同的算法,但还没有拿出一个理想的方式来尝试这一点。任何指针?例子?现有的数学或其他算法是相似的?


一个更复杂的例子是:6个项目,容器560x420。 元JSON: { "0": "432", "1": "389", "2": "403", "3": "190", "4": "215", "5": "832" } 一个可能的渲染:

+----------+----------+---------------------+ 
| 140x280 | 140x140 | 280x140    | 
| (0,1, | (3 or 4) | (2)     | 
| or 2) |   |      | 
|   |   |      | 
|   +----------+---------------------+ 
|   | 140x140 | 280x280    | 
|   | (3 or 4) | (5)     | 
|   |   |      | 
|   |   |      | 
+----------+----------+      | 
| 280x210    |      | 
| (0,1, or 2)   |      | 
|      |      | 
|      |      | 
+---------------------+---------------------+ 
+0

当你说“根据统计数据确定”时,你是指发生频率?只是好奇。 – voithos

+0

另外,由于bin包装通常是NP-hard,您是在寻找一个确切的解决方案,还是近似足够好? – voithos

+0

通过“根据统计数据确定”,我的意思是我会从数据库中提取数字,而数字越大的数字越大。 不清楚你在第二个问题中提出的问题。但基本上,如果您想象Windows 8 Metro UI /开始屏幕是动态构建的,并且基于用户使用该程序的频率(或其他可用数字/统计量)。每个图块都缩放一定倍数以适应网格。 (唯一不同的是它没有宽度约束) – user1960364

回答

0

做了一些更多的挖掘,发现我正在寻找被称为“砖石”。对此进行了一番探索,然后发现了Isotope,这是一个jQuery插件,希望能够完成我想要做的事情。这应该是一个快速的研究。

http://isotope.metafizzy.co/

+0

这是一个1d的bin打包器。还有wookmark和packery。我的解决方案是一个2d-bin打包机。 – Bytemain