4#ifndef ANIMATIONCURVES_H
5#define ANIMATIONCURVES_H
15 inline void Approach(T &cur,
const T target,
float frameTime,
const T exponentialFactor = 10, T linearFactor = 1)
18 if (frameTime > 1) frameTime = 1;
19 assert(exponentialFactor >= 0 && linearFactor >= 0);
22 const T delta(target - cur);
23 if (delta < 0) linearFactor = -linearFactor;
24 cur += (delta * exponentialFactor + linearFactor) * frameTime;
26 const T newDelta(target - cur);
27 if (newDelta * delta < 0) cur = target;
39 return 1.0 - m * m * 2.0;
51 return 1.0 + m * m * m * 4.0;
58 return 0.5 * (1.0 - std::cos(p * M_PI));
75 return e < 1.0 ? (1.0 - pow(1.0 - p, 1.0 / e)) : (pow(p, e));
78 float m = (p - 0.5) * 2.0;
81 return pow(t, -e) * 0.5;
83 return (1.0 - pow(1.0 - m, -e)) * 0.5 + 0.5;
bool is_equal_exact(float a, float b)
Definition FloatComparison.h:112
Definition AnimationCurves.h:10
float InOutQuadraticEasing(float p)
Definition AnimationCurves.h:32
float InOutSineEasing(float p)
Definition AnimationCurves.h:56
float SmoothEasing(double p, double e)
Definition AnimationCurves.h:70
float InOutCubicEasing(float p)
Definition AnimationCurves.h:44
void Approach(T &cur, const T target, float frameTime, const T exponentialFactor=10, T linearFactor=1)
Definition AnimationCurves.h:15