jittered-hexagonal-grid-sampling
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
- Can be used with a custom RNG function.
- Similar general API as poisson-disk-sampling and fast-2d-poisson-disk-sampling.
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