util_noise_noise_stack.js
/**
* @module NoiseStack
* @fileOverview Contains NoiseStack class.
*/
/**
* @class
* Stack of noise layers.
*/
class NoiseStack {
/**
* Create a new noise stack.
* @param {NoiseStackLayer[]} layers Noise stack layers to use
* @param {number} scale Uniform scaling
* @constructor
*/
constructor(layers = [], scale = 1) {
this.layers = layers;
this.scale = scale;
}
/**
* Execute the noise stack on data.
* @param {number} x Value of x position (input)
* @param {number} y Value of y position (input)
* @returns {number} Resulting height value
*/
get(x, y) {
x /= this.scale;
y /= this.scale;
let total = 0;
let count = 0;
for (const layer of this.layers) {
total += layer.get(x, y);
count += layer.weight;
}
return total / count;
}
}
export default NoiseStack;