Easing Functions
Overview
30 easing functions for animation and tweening, covering all standard easing curves. Each takes a normalized time t in [0, 1] and returns the eased value.
Why Use This?
Easing functions add natural-feeling motion to animations, UI transitions, camera movements, and procedural effects.
Easing Families
Each family has three variants: _in (accelerate), _out (decelerate), _in_out (both).
| Family | Functions |
|---|---|
| Linear | lm2_ease_linear_f32(t) |
| Sine | lm2_ease_sin_in_f32, lm2_ease_sin_out_f32, lm2_ease_sin_in_out_f32 |
| Quadratic | lm2_ease_quad_in_f32, lm2_ease_quad_out_f32, lm2_ease_quad_in_out_f32 |
| Cubic | lm2_ease_cubic_in_f32, lm2_ease_cubic_out_f32, lm2_ease_cubic_in_out_f32 |
| Quartic | lm2_ease_quart_in_f32, lm2_ease_quart_out_f32, lm2_ease_quart_in_out_f32 |
| Quintic | lm2_ease_quint_in_f32, lm2_ease_quint_out_f32, lm2_ease_quint_in_out_f32 |
| Exponential | lm2_ease_exp_in_f32, lm2_ease_exp_out_f32, lm2_ease_exp_in_out_f32 |
| Circular | lm2_ease_circ_in_f32, lm2_ease_circ_out_f32, lm2_ease_circ_in_out_f32 |
| Back | lm2_ease_back_in_f32, lm2_ease_back_out_f32, lm2_ease_back_in_out_f32 |
| Elastic | lm2_ease_elastic_in_f32, lm2_ease_elastic_out_f32, lm2_ease_elastic_in_out_f32 |
| Bounce | lm2_ease_bounce_in_f32, lm2_ease_bounce_out_f32, lm2_ease_bounce_in_out_f32 |
All functions also available in _f64 variants.
Generic Easing
Use the easing enum with the generic function to select easing at runtime:
float result = lm2_ease_f32(EASING_BOUNCE_OUT, t);
Enum Values
The easing enum includes the following values (in declaration order):
EASING_LINEAR,
EASING_SIN_IN, EASING_SIN_OUT, EASING_SIN_IN_OUT,
EASING_CUB_IN, EASING_CUB_OUT, EASING_CUB_IN_OUT,
EASING_QUINT_IN, EASING_QUINT_OUT, EASING_QUINT_IN_OUT,
EASING_CIRC_IN, EASING_CIRC_OUT, EASING_CIRC_IN_OUT,
EASING_ELASTIC_IN, EASING_ELASTIC_OUT, EASING_ELASTIC_IN_OUT,
EASING_QUAD_IN, EASING_QUAD_OUT, EASING_QUAD_IN_OUT,
EASING_QUART_IN, EASING_QUART_OUT, EASING_QUART_IN_OUT,
EASING_EXP_IN, EASING_EXP_OUT, EASING_EXP_IN_OUT,
EASING_BACK_IN, EASING_BACK_OUT, EASING_BACK_IN_OUT,
EASING_BOUNCE_IN, EASING_BOUNCE_OUT, EASING_BOUNCE_IN_OUT,
EASING_MAX
Helper
lm2_easing_to_string(easing) — Convert enum to human-readable string.
Example
// Animate a UI element sliding in
float t = elapsed / duration; // 0 to 1
float eased_t = lm2_ease_cubic_out_f32(t);
float x = lm2_lerp_f32(start_x, eased_t, end_x);
// Or use the generic version for configurable easing
easing curve = EASING_ELASTIC_OUT;
float eased = lm2_ease_f32(curve, t);
```