/jittered-hexagonal-grid-sampling

Jittered Hexagonal Grid Sampling

Primary LanguageJavaScriptMIT LicenseMIT

jittered-hexagonal-grid-sampling

Build Status NPM version

Jittered Hexagonal Grid Sampling

Installing

With npm do:

npm install jittered-hexagonal-grid-sampling

With yarn do:

yarn add jittered-hexagonal-grid-sampling

A compiled version for web browsers is also available on a CDN:

<script src="https://cdn.jsdelivr.net/gh/kchapelier/jittered-hexagonal-grid-sampling@1.0.1/build/jittered-hexagonal-grid-sampling.min.js"></script>

Features

Basic example

var p = new JitteredHexagonalGridSampling({
    shape: [500, 200],
    radius: 5
});
var points = p.fill();

console.log(points); // array of sample points, themselves represented as simple arrays

Result as an image

Public API

Constructor

new JitteredHexagonalGridSampling(options[, rng])

  • options :
    • shape : Size/dimensions of the grid to generate points in, required.
    • radius : Radius of the circumcircle of the regular hexagon, required.
    • jitter : Jitter amount, defaults to 0.666.
  • rng : A function to use as random number generator, defaults to Math.random.

The following code will allow the generation of points where both coordinates will range from 0 up to 50 (including 0, but not including 50, 0 <= c < 50).

var sampling = new JitteredHexagonalGridSampling({
    shape: [50, 50],
    radius: 4
});

Methods

sampling.fill()

Fill the grid with jittered points.

Returns the entirety of the points in the grid as an array of coordinate arrays. The points are sorted in their generation order.

var points = sampling.fill();

console.log(points[0]);
// prints something like [30, 16]

sampling.getAllPoints()

Get all the points present in the grid without trying to generate any new points.

Returns the entirety of the points in the grid as an array of coordinate arrays. The points are sorted in their generation order.

var points = sampling.getAllPoints();

console.log(points[0]);
// prints something like [30, 16]

sampling.next()

Try to generate a new point in the grid.

Returns a coordinate array when a point is generated, null otherwise.

var point;

while(point = sampling.next()) {
    console.log(point); // [x, y]
}

sampling.reset()

Reinitialize the grid as well as the internal state.

History

1.0.1 (2022-05-21) :

  • Update dev dependencies

1.0.0 (2020-06-08) :

  • First release

Roadmap

None.

How to contribute ?

For new features and other enhancements, please make sure to contact me beforehand, either on Twitter or through an issue on Github.

License

MIT