27 if (value == NULL || t <= 0)
29 double difference = target - *value;
30 double move = (gm_dt() * difference) / t;
31 if (fabs(move) >= fabs(difference)) {
46 if (value == NULL || t <= 0)
48 double difference = target - *value;
49 double speed_factor = 1.0 + sqrt(fabs(difference));
50 double move = (gm_dt() * difference * speed_factor) / t;
52 if (fabs(move) >= fabs(difference)) {
67 if (value == NULL || t <= 0)
69 double difference = target - *value;
70 double speed_factor = 1.0 + fabs(difference);
71 double move = (gm_dt() * difference * speed_factor) / t;
73 if (fabs(move) >= fabs(difference)) {
87 if (value == NULL || t <= 0)
89 double difference = target - *value;
90 if (fabs(difference) < 0.0001) {
94 double speed_factor = 1.0 / (1.0 + sqrt(fabs(difference)));
95 double move = (gm_dt() * difference * speed_factor) / t;
99 if (fabs(move) < 0.0001) {
100 move = 0.0001 * (difference > 0 ? 1 : -1);
103 if (fabs(move) >= fabs(difference)) {
118static inline double gm_anim_sin(
double center,
double radius,
double speed,
120 return center + (radius * sin(speed * (gm_t() + offset) * M_PI * 2));
131static inline double gm_anim_cos(
double center,
double radius,
double speed,
133 return center + (radius * cos(speed * (gm_t() + offset) * M_PI * 2));
void gm_anim_spring(double *value, double target, double t)
Moves a value towards a target with spring-like motion (exponential ease-out).
Definition animate.h:26
void gm_anim_ease_in_quad(double *value, double target, double t)
Starts slow and accelerates quadratically towards the target.
Definition animate.h:86
void gm_anim_ease_out_cubic(double *value, double target, double t)
Starts very fast and decelerates cubically to the target. More pronounced than quad.
Definition animate.h:66
void gm_anim_ease_out_quad(double *value, const double target, double t)
Starts fast and decelerates quadratically to the target. More pronounced than spring.
Definition animate.h:45