MCPcopy Create free account
hub / github.com/FastLED/FastLED / easeInOutCubic8

Function easeInOutCubic8

src/fl/math/ease.cpp.hpp:84–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

82}
83
84u8 easeInOutCubic8(u8 i) {
85 constexpr u16 MAX = 0xFF; // 255
86 constexpr u16 HALF = (MAX + 1) >> 1; // 128
87 constexpr u32 DENOM = (u32)MAX * MAX; // 255*255 = 65025
88 constexpr u32 ROUND = DENOM >> 1; // for rounding
89
90 if (i < HALF) {
91 // first half: y = 4·(i/MAX)³ → y_i = 4·i³ / MAX²
92 u32 ii = i;
93 u32 cube = ii * ii * ii; // i³
94 u32 num = 4 * cube + ROUND; // 4·i³, +half denom for rounding
95 return u8(num / DENOM);
96 } else {
97 // second half: y = 1 − ((−2·t+2)³)/2
98 // where t = i/MAX; equivalently:
99 // y_i = MAX − (4·(MAX−i)³ / MAX²)
100 u32 d = MAX - i;
101 u32 cube = d * d * d; // (MAX−i)³
102 u32 num = 4 * cube + ROUND;
103 return u8(MAX - (num / DENOM));
104 }
105}
106
107u8 easeOutQuad8(u8 i) {
108 // ease-out is the inverse of ease-in: 1 - (1-t)²

Callers 2

ease8Function · 0.85
FL_TEST_FILEFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected