From 43e95e89f32e7db6e04b01fe75a9dd38469ec6ff Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 14 Feb 2023 13:50:43 +0300 Subject: [PATCH] Add cubic hermite spline to geom --- libs/geom/include/psemek/geom/hermite.hpp | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 libs/geom/include/psemek/geom/hermite.hpp diff --git a/libs/geom/include/psemek/geom/hermite.hpp b/libs/geom/include/psemek/geom/hermite.hpp new file mode 100644 index 00000000..c4de2694 --- /dev/null +++ b/libs/geom/include/psemek/geom/hermite.hpp @@ -0,0 +1,26 @@ +#pragma once + +namespace psemek::geom +{ + + template + struct cubic_hermite + { + T a[3]; + + cubic_hermite() = default; + cubic_hermite(T p0, T m0, T p1, T m1) + { + a[0] = p0; + a[1] = m0; + a[2] = - 3 * p0 - 2 * m0 + 3 * p1 - m1; + a[3] = 2 * p0 + m0 - 2 * p1 + m1; + } + + T operator() (T t) const + { + return a[0] + t * (a[1] + t * (a[2] + t * a[3])); + } + }; + +}