UNPKG

@fdx/fxmath

Version:

A helper library for vector math and generative art

45 lines (35 loc) 973 B
import { mix, random, smoothstep, fract, random2 } from './common'; interface INoiseOptions{ octaves: number; lactunarity: number; gain: number; amplitude: number; frequency: number; seed:number; } export class Simple1DNoise{ public octaves = 4; public lactunarity = 2; public gain = 0.5; public amplitude = 1; public frequency = 1; public seed = 351263; constructor(options?: Partial<INoiseOptions>){ if(options){ for(let key in options){ (<any>this)[key] = options[key as keyof INoiseOptions] } } } noise(x: number){ let y = 0; let amplitude = this.amplitude; let frequency = this.frequency; for(let j = 0; j < this.octaves; j++){ y += amplitude * mix(random2(Math.floor(x * frequency),this.seed), random2(Math.floor(x * frequency) + 1,this.seed), smoothstep(0, 1, fract(x * frequency))); frequency *= this.lactunarity; amplitude *= this.gain; } return y; } }