1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:07:34 +00:00

LibGfx: Add some interpolation helpers for Gfx::Point<T>

- linear_interpolate
- quadratic_interpolate
- cubic_interpolate
This commit is contained in:
Andreas Kling 2021-09-15 19:46:52 +02:00
parent c4f2976d83
commit 139fdcc2cf

View file

@ -249,6 +249,24 @@ private:
using IntPoint = Point<int>;
using FloatPoint = Point<float>;
template<typename T>
inline Point<T> linear_interpolate(Point<T> const& p1, Point<T> const& p2, float t)
{
return Point<T> { p1.x() + t * (p2.x() - p1.x()), p1.y() + t * (p2.y() - p1.y()) };
}
template<typename T>
inline Point<T> quadratic_interpolate(Point<T> const& p1, Point<T> const& p2, Point<T> const& c1, float t)
{
return linear_interpolate(linear_interpolate(p1, c1, t), linear_interpolate(c1, p2, t), t);
}
template<typename T>
inline Point<T> cubic_interpolate(Point<T> const& p1, Point<T> const& p2, Point<T> const& c1, Point<T> const& c2, float t)
{
return linear_interpolate(quadratic_interpolate(p1, c1, c2, t), quadratic_interpolate(c1, c2, p2, t), t);
}
}
namespace AK {