Clutter Engine 0.0.1
Loading...
Searching...
No Matches
gradient_paint.inl
1
2
3namespace glm
4{
5 template<typename T, qualifier Q>
6 GLM_FUNC_QUALIFIER T radialGradient
7 (
8 vec<2, T, Q> const& Center,
9 T const& Radius,
10 vec<2, T, Q> const& Focal,
11 vec<2, T, Q> const& Position
12 )
13 {
14 vec<2, T, Q> F = Focal - Center;
15 vec<2, T, Q> D = Position - Focal;
16 T Radius2 = pow2(Radius);
17 T Fx2 = pow2(F.x);
18 T Fy2 = pow2(F.y);
19
20 T Numerator = (D.x * F.x + D.y * F.y) + sqrt(Radius2 * (pow2(D.x) + pow2(D.y)) - pow2(D.x * F.y - D.y * F.x));
21 T Denominator = Radius2 - (Fx2 + Fy2);
22 return Numerator / Denominator;
23 }
24
25 template<typename T, qualifier Q>
26 GLM_FUNC_QUALIFIER T linearGradient
27 (
28 vec<2, T, Q> const& Point0,
29 vec<2, T, Q> const& Point1,
30 vec<2, T, Q> const& Position
31 )
32 {
33 vec<2, T, Q> Dist = Point1 - Point0;
34 return (Dist.x * (Position.x - Point0.x) + Dist.y * (Position.y - Point0.y)) / glm::dot(Dist, Dist);
35 }
36}//namespace glm
GLM_FUNC_QUALIFIER vec< L, T, Q > sqrt(vec< L, T, Q > const &x)
Definition func_exponential.inl:128
GLM_FUNC_DECL T linearGradient(vec< 2, T, Q > const &Point0, vec< 2, T, Q > const &Point1, vec< 2, T, Q > const &Position)
Definition gradient_paint.inl:27
GLM_FUNC_DECL T radialGradient(vec< 2, T, Q > const &Center, T const &Radius, vec< 2, T, Q > const &Focal, vec< 2, T, Q > const &Position)
Definition gradient_paint.inl:7
Core features
Definition common.hpp:21
Definition qualifier.hpp:35