Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jakesgordon/bin-packing
A javascript binary tree based algorithm for 2d bin-packing suitable for generating CSS sprites
https://github.com/jakesgordon/bin-packing
Last synced: 3 days ago
JSON representation
A javascript binary tree based algorithm for 2d bin-packing suitable for generating CSS sprites
- Host: GitHub
- URL: https://github.com/jakesgordon/bin-packing
- Owner: jakesgordon
- License: mit
- Created: 2011-05-07T22:55:54.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2018-08-09T14:09:11.000Z (over 6 years ago)
- Last Synced: 2024-10-28T04:24:11.193Z (17 days ago)
- Language: JavaScript
- Homepage: http://codeincomplete.com/posts/2011/5/7/bin_packing/
- Size: 65.4 KB
- Stars: 658
- Watchers: 37
- Forks: 131
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Binary Tree Algorithm for 2D Bin Packing
========================================This project is a javascript experiment to write a binary tree based
bin packing algorithm that is suitable for generating
[CSS sprites](https://github.com/jakesgordon/sprite-factory).* You can play with the [demo here](http://codeincomplete.com/posts/2011/5/7/bin_packing/example/)
* You can find a [description here](http://codeincomplete.com/posts/2011/5/7/bin_packing/)Demo
====Clone this repository
git clone https://github.com/jakesgordon/bin-packing
View the index.html file in your favorite browser for examples of algorithm in use with lots of configurable options.
Usage
=====If you want to use this in your own javascript projects, you need something like this:
var packer = new Packer(1000, 1000); // or: new GrowingPacker();
var blocks = [
{ w: 100, h: 100 },
{ w: 100, h: 100 },
{ w: 80, h: 80 },
{ w: 80, h: 80 },
etc
etc
];blocks.sort(function(a,b) { return (b.h < a.h); }); // sort inputs for best results
packer.fit(blocks);
for(var n = 0 ; n < blocks.length ; n++) {
var block = blocks[n];
if (block.fit) {
DrawRectangle(block.fit.x, block.fit.y, block.w, block.h);
}
}
See source code comments for more details.
License
=======See [LICENSE](https://github.com/jakesgordon/bin-packing/blob/master/LICENSE) file.
Contact
=======If you have any ideas, feedback, requests or bug reports, you can reach me at
[[email protected]](mailto:[email protected]), or via
my website: [Code inComplete](http://codeincomplete.com/posts/2011/5/7/bin_packing/)