getNoise3 method

double getNoise3(
  1. double x,
  2. double y,
  3. double z
)

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);
  }
}