/noise-js

n-dimensional noise generator implementation with JavaScript

Primary LanguageJavaScript

noise-js

n-dimensional perlin noise generator implementation with JavaScript

Install

npm i n-dimensional-noise

Usage

You can generate noise with any number of dimensions. Initialize Perlin object with the number of dimensions you want to sample and octave count. Octave count is one as default. Then call 'call' method of the object with the coordinates. Coordinates dimension number must be same with the one you gave to constructor. Perlin noise returns values ranging from -1 to 1.

var noise=require('n-dimensional-noise')
let p=new noise.Perlin(2,5)

console.log(p.call([0.5,0.5]))
console.log(p.call([0.5,0.81]))

let arr=Array(100).fill().map(() => Array(100).fill(0));
for(var i=0; i<100; i++){
	for(var j=0; j<100; j++){
		arr[i][j]=p.call([i/20,j/20])
	}
}
console.log(JSON.stringify(arr))

You can generate worley noise too. Worley noise's range of output values is not determined since numberOfSeedPoints and dimension number affects it but it is for sure between 0 and 1.

//dim is the number of dimensions numberOfSeedPoints is the number of sampled points in worley noise. Its default is 100.
let w=new noise.Worley({dim:3, numberOfSeedPoints:1000})


let arr=Array(100).fill().map(() => Array(100).fill().map(() => Array(100).fill(0)));
for(var i=0; i<100; i++){
	for(var j=0; j<100; j++){
		for(var k=0; k<100; k++){
			arr[i][j][k]=w.call(i/100,j/100,k/100)
		}
	}
}
console.log(JSON.stringify(arr))

Demo

A sampled noise of 500x500 with octave count 5.

img

A sampled 3d worley noise as gif. Third dimension is used as time.

gif

License

MIT © thetarby