2013-07-23 67 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