Deterministic and order-preserving 2D circle packing algorithm for data visualization.
$ npm install affineplane-circlepack
$ yarn add affineplane-circlepack
The basic usage is simple:
const pack = require('affineplane-circlepack')
const circles = [
{ x: 1, y: 0, r: 1 },
{ x: 2, y: 4, r: 2 },
{ x: 1, y: 5, r: 2 },
...
]
const packed = pack(circles)
// packed is an array that contains the same circles with x and y adjusted.
Asynchronic runs are good for packing large sets of circles in a non-blocking way:
pack(circles, (batch) => {
console.log('A batch of packed circles fresh out of the oven.', batch)
}, () => {
console.log('All packed.')
})
Pull requests and bug reports are highly appreciated. Please test your contribution with the following scripts:
Run test suite:
$ npm run test
Run only linter:
$ npm run lint
This library uses some tools from affineplane geometry library.