FastLED 3.9.15
Loading...
Searching...
No Matches

◆ easeInOutQuad16()

u16 fl::easeInOutQuad16 ( u16 x)

16-bit quadratic ease-in/ease-out function Takes an input value 0-65535 and returns an eased value 0-65535

Definition at line 186 of file ease.cpp.

186 {
187 // 16-bit quadratic ease-in / ease-out function
188 constexpr u32 MAX = 0xFFFF; // 65535
189 constexpr u32 HALF = (MAX + 1) >> 1; // 32768
190 constexpr u32 DENOM = MAX; // divisor
191 constexpr u32 ROUND = DENOM >> 1; // for rounding
192
193 if (x < HALF) {
194 // first half: y = 2·(x/MAX)² → y_i = 2·x² / MAX
195 fl::u64 xi = x;
196 fl::u64 num = 2 * xi * xi + ROUND; // 2*x², +half for rounding
197 return u16(num / DENOM);
198 } else {
199 // second half: y = 1 − 2·(1−x/MAX)² → y_i = MAX − (2·(MAX−x)² / MAX)
200 fl::u64 d = MAX - x;
201 fl::u64 num = 2 * d * d + ROUND; // 2*(MAX−x)², +half for rounding
202 return u16(MAX - (num / DENOM));
203 }
204}
int x
Definition simple.h:92
#define MAX(a, b)
Definition math_macros.h:37

References MAX, and x.

Referenced by ease16(), and ease16().

+ Here is the caller graph for this function: