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

◆ easeInOutCubic8()

u8 fl::easeInOutCubic8 ( u8 i)

8-bit cubic ease-in/ease-out function Takes an input value 0-255 and returns an eased value 0-255 More pronounced easing curve than quadratic

Definition at line 75 of file ease.cpp.

75 {
76 constexpr u16 MAX = 0xFF; // 255
77 constexpr u16 HALF = (MAX + 1) >> 1; // 128
78 constexpr u32 DENOM = (u32)MAX * MAX; // 255*255 = 65025
79 constexpr u32 ROUND = DENOM >> 1; // for rounding
80
81 if (i < HALF) {
82 // first half: y = 4·(i/MAX)³ → y_i = 4·i³ / MAX²
83 u32 ii = i;
84 u32 cube = ii * ii * ii; // i³
85 u32 num = 4 * cube + ROUND; // 4·i³, +half denom for rounding
86 return u8(num / DENOM);
87 } else {
88 // second half: y = 1 − ((−2·t+2)³)/2
89 // where t = i/MAX; equivalently:
90 // y_i = MAX − (4·(MAX−i)³ / MAX²)
91 u32 d = MAX - i;
92 u32 cube = d * d * d; // (MAX−i)³
93 u32 num = 4 * cube + ROUND;
94 return u8(MAX - (num / DENOM));
95 }
96}
#define MAX(a, b)
Definition math_macros.h:37
unsigned char u8
Definition int.h:17

References MAX.

Referenced by ease8(), and ease8().

+ Here is the caller graph for this function: