Skip to content

n-dimensional noise generator implementation with JavaScript

Notifications You must be signed in to change notification settings

thetarby/noise-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

n-dimensional noise generator implementation with JavaScript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published