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 195 of file ease.cpp.hpp.

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

References MAX, and x.

Referenced by ease16(), and ease16().

+ Here is the caller graph for this function: