canvas-sketch-util
Version:
Utilities for sketching in Canvas, WebGL and generative art
84 lines (52 loc) • 2.14 kB
Markdown
# canvas-sketch-util
Utilities for generative art in Canvas, WebGL and JavaScript.
This is designed to be used alongside the [canvas-sketch](https://github.com/mattdesl/canvas-sketch/) toolset, but it is generic enough to work for various Node.js/Browser use cases.
## Example
You can require each module individually, and grab only the necessary functions.
Some examples:
```js
const math = require('canvas-sketch-util/math');
console.log(math.clamp(1.25, 0, 1));
// 1
```
Or by using destructuring to grab only a select few functions:
```js
const { fract, lerp } = require('canvas-sketch-util/math');
console.log(fract(51.23));
// 0.23
console.log(lerp(0, 50, 0.5));
// 25
```
The `random` utility has been inspired by Unity3D, as well as other engines.
```js
const random = require('canvas-sketch-util/random');
console.log(random.value());
// some random number between 0 (inclusive) and 1 (exclusive)
// Create a seeded random generator
const seeded = random.createRandom(25);
console.log(seeded.range(25, 50));
// some deterministic random number
console.log(seeded.shuffle([ 'a', 'b', 'c' ]));
// deterministically shuffles a copy of the array
```
## Features
The following modules have been implemented:
- [`math`](./docs/math.md) - Math & interpolation utilities
- [`random`](./docs/random.md) - A random number generator
- [`color`](./docs/color.md) - RGB and HSL color utilities
- [`geometry`](./docs/geometry.md) - Utilities for geometry & shapes
- [`penplot`](./docs/penplot.md) - Utilities for working with pen plotters (e.g. AxiDraw)
- [`shader`](./docs/shader.md) - A full-screen GLSL shader utility
The following are planned but not yet implemented:
- `tween` - Tweening, easing & animation utilities
And more to come...
## Install
Use [npm](https://npmjs.com/) to install.
```sh
npm install canvas-sketch-util --save
```
## Docs
For full API documentation, see [Documentation](./docs/README.md).
You can also see a few examples in [./test/examples.js](./test/examples.js).
## License
MIT, see [LICENSE.md](http://github.com/mattdesl/canvas-sketch-util/blob/master/LICENSE.md) for details.