From 398fdbaa5c02bbd138c59004053d2e8ad0082ead Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Thu, 14 Mar 2024 00:58:05 +0100 Subject: Add animation scaffolding --- src/animate.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/animate.c (limited to 'src/animate.c') diff --git a/src/animate.c b/src/animate.c new file mode 100644 index 0000000..7b95e9c --- /dev/null +++ b/src/animate.c @@ -0,0 +1,40 @@ +#include + +#include "animate.h" + +double quadratic_bezier(double x, double a, double b, double c) +{ + g_assert(x >= 0 && x <= 1); + g_assert(a >= 0 && a <= 1); + g_assert(b >= 0 && b <= 1); + g_assert(c >= 0 && c <= 1); + + const double t = 1 - x; + return a * t * t + 2 * b * t * x + c * x * x; +} + +double cubic_bezier(double x, double a, double b, double c, double d) +{ + g_assert(x >= 0 && x <= 1); + g_assert(a >= 0 && a <= 1); + g_assert(b >= 0 && b <= 1); + g_assert(c >= 0 && c <= 1); + g_assert(d >= 0 && d <= 1); + + const double t = 1 - x; + return a * (t * t * t) + 3 * b * (t * t * x) + 3 * c * (t * x * x) + d * (x * x * x); +} + +Animation *animation_create() +{ + Animation *anim = g_malloc0(sizeof(Animation)); + // TODO + return anim; +} + +void animation_destroy(Animation *anim) +{ + g_free(anim); +} + +// vim: ts=4 sw=4 et -- cgit v1.2.3