FastLED 3.10.8
Loading...
Searching...
No Matches

◆ compute()

vec2f fl::GielisCurvePath::compute ( float alpha)
overridevirtual

Implements fl::XYPathGenerator.

Definition at line 164 of file xypath_impls.cpp.hpp.

164 {
165 // 1) map alpha to angle θ ∈ [0 … 2π)
166 constexpr float kTwoPi = 6.283185307179586f;
167 float theta = alpha * kTwoPi;
168
169 // 2) superformula parameters (members of your path)
170 // a, b control the “shape scale” (often both = 1)
171 // m controls symmetry (integer number of lobes)
172 // n1,n2,n3 control curvature/sharpness
173 float a = params().a;
174 float b = params().b;
175 float m = params().m;
176 float n1 = params().n1;
177 float n2 = params().n2;
178 float n3 = params().n3;
179
180 // 3) compute radius from superformula
181 float t2 = m * theta / 4.0f;
182 float part1 = powf(fabsf(cosf(t2) / a), n2);
183 float part2 = powf(fabsf(sinf(t2) / b), n3);
184 float r = powf(part1 + part2, -1.0f / n1);
185
186 // 4) polar → Cartesian in unit circle
187 float x = r * cosf(theta);
188 float y = r * sinf(theta);
189
190 return vec2f{x, y};
191}
GielisCurveParams & params() FL_NO_EXCEPT
float sinf(float value) FL_NO_EXCEPT
Definition math.h:360
vec2< float > vec2f
Definition geometry.h:333
float cosf(float value) FL_NO_EXCEPT
Definition math.h:366
float fabsf(float value) FL_NO_EXCEPT
Definition math.h:516
float powf(float base, float exponent) FL_NO_EXCEPT
Definition math.h:444

References fl::cosf(), fl::fabsf(), fl::FL_NO_EXCEPT, params(), fl::powf(), fl::sinf(), fl::x, and fl::y.

+ Here is the call graph for this function: