getNoise3 method
3D noise at the given position using the current settings.
Returns a value bounded roughly in -1, 1.
Implementation
double getNoise3(double x, double y, double z) {
x *= frequency;
y *= frequency;
z *= frequency;
switch (noiseType) {
case NoiseType.openSimplex2:
case NoiseType.openSimplex2S:
// DefaultOpenSimplex2 rotation (not a skew).
const double r3 = 2.0 / 3.0;
final double r = (x + y + z) * r3;
x = r - x;
y = r - y;
z = r - z;
break;
case NoiseType.cellular:
case NoiseType.perlin:
case NoiseType.value:
// No rotation; these sample the frequency-scaled coordinates directly.
break;
}
switch (fractalType) {
case FractalType.none:
return _genNoiseSingle3(seed, x, y, z);
case FractalType.fbm:
return _genFractalFBm3(x, y, z);
case FractalType.ridged:
return _genFractalRidged3(x, y, z);
case FractalType.pingPong:
return _genFractalPingPong3(x, y, z);
}
}