60template <
typename T,
typename Func> T
ease(
const T& a,
const T& b,
float t, Func func)
62 static_assert(std::is_arithmetic_v<T>,
"T must be an arithmetic type");
63 static_assert(std::is_invocable_r_v<float, Func, float>,
64 "Func must be a callable that takes a float and returns a float");
66 return a + (b - a) * func(std::clamp(t, 0.0F, 1.0F));
float ease_out_cubic(float t)
float ease_out_quad(float t)
float ease_in_out_expo(float t)
float ease_in_elastic(float t)
T ease(const T &a, const T &b, float t, Func func)
float ease_out_bounce(float t)
float ease_in_out_quad(float t)
float ease_out_back(float t)
float ease_in_out_cubic(float t)
float ease_in_back(float t)
float ease_out_sine(float t)
float ease_in_cubic(float t)
float ease_in_quad(float t)
float ease_in_sine(float t)
float ease_in_out_sine(float t)
float ease_out_elastic(float t)
float ease_out_expo(float t)
float ease_in_expo(float t)
float ease_in_bounce(float t)