1.0.2 • Published 10 months ago
textile-pack v1.0.2
textile-pack
Typescript implementation of the binary tree bin-packing algorithm optimized for problems where the width is fixed but the height is not, such cutting pieces out of textiles.
I made this to find cutting plans for carpet on a roll.
Pass it an array of items that each have a numeric height
and width
, and a width
value for the containing piece and it will return a cutting plan and dimensions for the smallest containing piece possible.
Usage
npm install textile-pack
import { packItemsIntoWidth } from 'textile-pack';
const items = [
{
id: 'p1',
height: 5,
width: 2,
},
{
id: 'p2',
height: 3,
width: 2,
},
{
id: 'p3',
height: 2,
width: 2,
},
];
const { packedItems, height, width } = packItemsIntoWidth(items, 4); // width of 4
// packedItems will be an array of objects like
{
item: {} // the original item,
height: 5,
width: 2,
x: 0, // x position in the layout
y: 0, // y position in the layout
},
// height and width will be the dimensions of the space needed to fit all the items
/* The layout will be
x ________2________4
y| | |
| p1 | p2 |
3| |________|
| | p3 |
5|________|________|
*/
Acknowledgements
Builds on top of this code by Enoch Riese, , this code by Bryan Burgers, and this code by Jake Gordon.