From ed1cab483e49e29396178a33dea51773aa770855 Mon Sep 17 00:00:00 2001 From: bonmas14 Date: Mon, 4 Aug 2025 13:33:47 +0000 Subject: Math, not tested --- src/un_splines.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/un_splines.c (limited to 'src/un_splines.c') diff --git a/src/un_splines.c b/src/un_splines.c new file mode 100644 index 0000000..7b27ee0 --- /dev/null +++ b/src/un_splines.c @@ -0,0 +1,40 @@ +real un_m_bezierr(real a, real q0, real q1, real b, real t) { + real i0, i1, i2, p1, p2; + + i0 = un_m_lerpr(a, q0, t); + i1 = un_m_lerpr(q0, q1, t); + i2 = un_m_lerpr(q1, b, t); + + p1 = un_m_lerpr(i0, i1, t); + p2 = un_m_lerpr(i1, i2, t); + + return un_m_lerpr(p1, p2, t); +} + +f32 un_m_bezierf(f32 a, f32 q0, f32 q1, f32 b, f32 t) { + f32 i0, i1, i2, p1, p2; + + i0 = un_m_lerpf(a, q0, t); + i1 = un_m_lerpf(q0, q1, t); + i2 = un_m_lerpf(q1, b, t); + + p1 = un_m_lerpf(i0, i1, t); + p2 = un_m_lerpf(i1, i2, t); + + return un_m_lerpf(p1, p2, t); +} + +f64 un_m_bezierd(f64 a, f64 q0, f64 q1, f64 b, f64 t) { + f64 i0, i1, i2, p1, p2; + + i0 = un_m_lerpd(a, q0, t); + i1 = un_m_lerpd(q0, q1, t); + i2 = un_m_lerpd(q1, b, t); + + p1 = un_m_lerpd(i0, i1, t); + p2 = un_m_lerpd(i1, i2, t); + + return un_m_lerpd(p1, p2, t); +} + +// add v2-4 variants -- cgit v1.2.3-70-g09d2