affineplane-circlepack

Fast order-preserving circle packing algorithm for data visualization

MIT License

Downloads
13
Stars
2

affineplane-circlepack

Deterministic and order-preserving 2D circle packing algorithm for data visualization. Try the demo.

Install

Install with npm or yarn:

$ npm install affineplane-circlepack
$ yarn add affineplane-circlepack

Usage

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.')
})

Contribute

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

See also

This library uses some tools from affineplane geometry library.

License

MIT