| 114 | } |
| 115 | |
| 116 | u8 easeInCubic8(u8 i) { |
| 117 | // Simple cubic ease-in: i³ scaled to 8-bit range |
| 118 | // y = i³ / MAX² |
| 119 | constexpr u16 MAX = 0xFF; |
| 120 | constexpr u32 DENOM = (u32)MAX * MAX; |
| 121 | constexpr u32 ROUND = DENOM >> 1; |
| 122 | |
| 123 | u32 ii = i; |
| 124 | u32 cube = ii * ii * ii; // i³ |
| 125 | u32 num = cube + ROUND; |
| 126 | return u8(num / DENOM); |
| 127 | } |
| 128 | |
| 129 | u8 easeOutCubic8(u8 i) { |
| 130 | // ease-out cubic: 1 - (1-t)³ |