util_noise_noise_sequence.js
/**
* @module NoiseSequence
* @fileoverview Contains NoiseSequence class.
*/
/**
* @class
* Sequence of noise processes.
*/
class NoiseSequence {
/**
* Create a new noise sequence.
* @param {NoiseProcess[]} seq Array of noise processes for manipulation
* @param {number} scale Uniform scaling
* @constructor
*/
constructor(seq = [], scale = 1) {
this.seq = seq;
this.scale = scale;
}
/**
* Execute the noise sequence on data.
* @param {number} x Value of x position (input)
* @param {number} y Value of y position (input)
* @returns {number} Resulting manipulated value
*/
get(x, y) {
x /= this.scale;
y /= this.scale;
let curr = {
x: x,
y: y,
val: 0
};
for (const p of this.seq)
curr = p.do(curr.x, curr.y, curr.val);
return curr.val;
}
}
export default NoiseSequence;