influences property

Map<InfluenceType, double Function(double, [double?, double?])> influences
getter/setter pair

Equations describing geographic features.

Implementation

static Map<InfluenceType,double Function(double,[double?, double?])> influences = {
  InfluenceType.mesa: (double x,[double? y, double? z]) {
    return 1.25*math.min(0.8, math.exp(-(x*x)));
  },
  InfluenceType.hole: (double x,[double? y, double? z]) {
    return -influences[InfluenceType.mesa]!(x);
  },
  InfluenceType.hill: (double x,[double? y, double? z]) {
    // Same curve as EaseInOut, but mirrored and translated.
    return x < 0 ? (x+1)*(x+1)*(3-2*(x+1)) : 1-x*x*(3-2*x);
  },
  InfluenceType.valley: (double x,[double? y, double? z]) {
    return -influences[InfluenceType.hill]!(x);
  },
  InfluenceType.dome: (double x,[double? y, double? z]) {
    // Parabola
    return -(x+1)*(x-1);
  },
  // Not meaningful in Additive or Subtractive mode
  InfluenceType.flat: (double x,[double? y, double? z]) {
    return 0;
  },
  InfluenceType.volcano: (double x,[double? y, double? z]) {
    return 0.94 - 0.32*((2*x).abs() + math.cos(2*math.pi*x.abs() + 0.4));
  },
};