applyEasing function

double applyEasing(
  1. double t,
  2. EasingFunction easing
)

Applies easing to a normalized t (0-1).

Implementation

double applyEasing(double t, EasingFunction easing) {
  return switch (easing) {
    EasingFunction.linear => t,
    EasingFunction.easeIn => t * t,
    EasingFunction.easeOut => 1 - (1 - t) * (1 - t),
    EasingFunction.easeInOut =>
      t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) * (-2 * t + 2) / 2,
    EasingFunction.elasticOut =>
      t == 0
          ? 0
          : t == 1
          ? 1
          : pow(2, -10 * t) * sin((t * 10 - 0.75) * (2 * pi / 3)) + 1,
    EasingFunction.bounceOut => _bounceOut(t),
  };
}