public override double this[double x, double y, double z] { get { double val = 0.0; double signal = 0.0; double persistance = 1.0; double nx, ny, nz; int seed; x *= Frequency; y *= Frequency; z *= Frequency; for (int octave = 0; octave < Octaves; ++octave) { nx = Noise.MakeIntRange(x); ny = Noise.MakeIntRange(y); nz = Noise.MakeIntRange(z); seed = (int)((Seed + octave) & 0xffffffff); signal = Noise.CoherentGradientNoise3D(nx, ny, nz, seed, Quality); val += signal * persistance; x *= Lacunarity; y *= Lacunarity; z *= Lacunarity; persistance *= Persistance; } return(val); } }
public override double this[double x, double y, double z] { get { x *= Frequency; y *= Frequency; z *= Frequency; double signal = 0.0; double val = 0.0; double weight = 1.0; double offset = 1.0; double gain = 2.0; double[] weights = SpectralWeights; for (int octave = 0; octave < Octaves; ++octave) { double nx = Noise.MakeIntRange(x); double ny = Noise.MakeIntRange(y); double nz = Noise.MakeIntRange(z); int seed = (Seed + octave) & 0x7fffffff; signal = Noise.CoherentGradientNoise3D(nx, ny, nz, seed, Quality); signal = System.Math.Abs(signal); signal = offset - signal; signal *= signal; signal *= weight; weight = signal * gain; if (weight > 1.0) { weight = 1.0; } if (weight < 0.0) { weight = 0.0; } val += (signal * weights[octave]); x *= Lacunarity; y *= Lacunarity; z *= Lacunarity; } return((val * 1.25) - 1.0); } }