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:
parent
c4f2976d83
commit
139fdcc2cf
1 changed files with 18 additions and 0 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue