Skip to content

Instantly share code, notes, and snippets.

@sandsu
Created June 18, 2014 12:04
Show Gist options
  • Save sandsu/f8e9734b5a1ed3cab512 to your computer and use it in GitHub Desktop.
Save sandsu/f8e9734b5a1ed3cab512 to your computer and use it in GitHub Desktop.
Binpacking2D
// Aqui vão os dados da intanscia
var items = [
{w: 10, h: 40},
{w: 15, h: 30},
{w: 20, h: 20},
{w: 30, h: 15},
{w: 40, h: 10}
];
// Nova variável para quardar os parametros aleatorios que serão usados
var blocks = []
// Aqui determinamos a quantidade de parametros aleatórios da instancia que queremos usar. No caso, estamos usando 3
for(var n = 0 ; n < 3 ; n++) {
id = null
// Abaixo a lógica garante que eu não vou usar o mesmo parametro duas vezes.
while(items[id]==null){
id = Math.floor(Math.random()*items.length)
}
blocks[n] = items[id]
items[id] = null
}
// Aqui determinamos o tamanho da matriz (caixa grande que contem as caixas menores)
var packer = new Packer(100, 100);
// Aqui é onde de fato o algoritmo é calculado
packer.fit(blocks);
// Aqui percorremos os resultados do posicionamento das caixas menores
for(var n = 0 ; n < blocks.length ; n++) {
var block = blocks[n];
// Caso ela se encaixe dentro da matriz nós exibimos o resultado na tela
if (block.fit) {
document.body.innerHTML+="["+(n+1)+"] x: "+block.fit.x+" y: "+block.fit.y+" Largura:"+block.w+" Altura:"+block.h+"</br>";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment