FastLED 3.10.8
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 196 of file ease.cpp.hpp.

196 {
197 // 16-bit quadratic ease-in / ease-out function
198 constexpr u32 MAX = 0xFFFF; // 65535
199 constexpr u32 HALF = (MAX + 1) >> 1; // 32768
200 constexpr u32 DENOM = MAX; // divisor
201 constexpr u32 ROUND = DENOM >> 1; // for rounding
202
203 if (x < HALF) {
204 // first half: y = 2·(x/MAX)² → y_i = 2·x² / MAX
205 fl::u64 xi = x;
206 fl::u64 num = 2 * xi * xi + ROUND; // 2*x², +half for rounding
207 return u16(num / DENOM);
208 } else {
209 // second half: y = 1 − 2·(1−x/MAX)² → y_i = MAX − (2·(MAX−x)² / MAX)
210 fl::u64 d = MAX - x;
211 fl::u64 num = 2 * d * d + ROUND; // 2*(MAX−x)², +half for rounding
212 return u16(MAX - (num / DENOM));
213 }
214}
int x
Definition simple.h:92
fl::u64 u64
Definition s16x16x4.h:221

References FL_NO_EXCEPT, and x.

Referenced by ease16(), and ease16().

+ Here is the caller graph for this function: