build status

binpacker3d

This crate solves the problem of "fitting smaller boxes inside of a larger box" using a three dimensional fitting algorithm.

The algorithm orthogonally packs the all the items into a minimum number of bins by leveraging a First Fit Decreasing greedy strategy, along with rotational optimizations.

Usage:

```rust use binpacker3d::bin::Bin; use binpacker3d::item::Item; use binpacker3d::packingalgorithm::packingalgorithm;

let deck = Item::new("deck", [2, 8, 12]);
let die = Item::new("die", [8, 8, 8]);
let items = vec![deck, deck, die, deck, deck];

let packed_items = packing_algorithm(Bin::new([8, 8, 12]), &items);
assert_eq!(packed_items, Ok(vec![vec!["deck", "deck", "deck", "deck"], vec!["die"]]));

```

Limitations:

This algorithm solves a constrained version of the 3D bin packing problem. As such, we have the following limitations:

Acknowledgements:

The algorithm leverages a rotational optimization when packing items which are less than half the length of a bin's side, as proposed in the paper titled "The Three-Dimensional Bin Packing Problem" (Martello, 1997), page 257: https://www.jstor.org/stable/pdf/223143.pdf