https://github.com/kchapelier/jittered-hexagonal-grid-sampling
Jittered Hexagonal Grid Sampling
https://github.com/kchapelier/jittered-hexagonal-grid-sampling
javascript procedural-generation sampling
Last synced: 25 days ago
JSON representation
Jittered Hexagonal Grid Sampling
- Host: GitHub
- URL: https://github.com/kchapelier/jittered-hexagonal-grid-sampling
- Owner: kchapelier
- License: mit
- Created: 2020-06-08T11:20:47.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-05-21T08:56:38.000Z (over 3 years ago)
- Last Synced: 2025-01-03T05:05:47.982Z (10 months ago)
- Topics: javascript, procedural-generation, sampling
- Language: JavaScript
- Homepage:
- Size: 72.3 KB
- Stars: 13
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# jittered-hexagonal-grid-sampling
[](https://travis-ci.org/kchapelier/jittered-hexagonal-grid-sampling) [](http://badge.fury.io/js/jittered-hexagonal-grid-sampling)
Jittered Hexagonal Grid Sampling
## Installing
With [npm](https://www.npmjs.com/) do:
```
npm install jittered-hexagonal-grid-sampling
```With [yarn](https://yarnpkg.com/) do:
```
yarn add jittered-hexagonal-grid-sampling
```A compiled version for web browsers is also available on a CDN:
```html
```
## Features
- Can be used with a custom RNG function.
- Similar general API as [poisson-disk-sampling](https://github.com/kchapelier/poisson-disk-sampling) and [fast-2d-poisson-disk-sampling](https://github.com/kchapelier/fast-2d-poisson-disk-sampling).## Basic example
```js
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**).
```js
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.
```js
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.
```js
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.
```js
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](https://github.com/kchapelier/jittered-hexagonal-grid-sampling/tree/1.0.1) (2022-05-21) :
- Update dev dependencies
### [1.0.0](https://github.com/kchapelier/jittered-hexagonal-grid-sampling/tree/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](https://twitter.com/kchplr) or through an issue on Github.
## License
MIT