# @trinkets/noise

Random number generators for texture generation.

## Perlin Noise

[Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) is a procedural, gradient noise generator, developed by [Ken Perlin](https://mrl.nyu.edu/~perlin/doc/oscar.html).

Useful for generating numbers that can be used for generating, say, random terrain on a map that has some credible transition from one elevation based terrain type to another.

This implementation started with the code found in [Building Up Perlin Noise](http://eastfarthing.com/blog/2015-04-21-noise/) by [Andrew Kensler](http://eastfarthing.com/blog/2015-04-21-noise/). The default code is modified from the vanilla implementation described in the blog post to include a "jitter" by default which makes 2d integer coordinates very likely not always return 0.

## Installation

```bash
npm install @trinkets/noise
```

## Usage

```js
import {perlin, factories} from '@trinkets/noise'
// or import * as random from '@trinkets/noise'

// Generate some value at an x, y coordinate.
console.log(perlin(1, 3))
console.log(perlin(1.1, 3.1))

// Build a new perlin noise method, using a configuration different from the default.
import {random} from '@trinkets/random'

const perlin2 = factories.perlin({
  // function() that, when called, returns an assumed random number between 0 and 1,
  // per the definition of Math.random. Here we use the one from @trinkets/random.
  random,
  // Jitter offsets the zero of the surflet from integer values of x, y.
  // False to turn off jitter (default is true).
  jitter = false,
})
```
