function fractalNoise(x, y, frequency, octaves, persistence = 0.5, lacunarity = 2) { let total = 0; let amplitude = 1; let maxValue = 0; // Used for normalizing result to 0.0 - 1.0 for (let i = 0; i < octaves; i++) { total += noise2D(x * frequency, y * frequency) * amplitude; maxValue += amplitude; amplitude *= persistence; frequency *= lacunarity; } return total / maxValue; }