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

◆ sin32_interp()

FASTLED_FORCE_INLINE i32 fl::sin32_interp ( u8 qi,
u8 qi_next,
i32 dmask,
u32 t,
u8 offset = 0 )

Definition at line 40 of file sin32.h.

40 {
41 i32 y0 = read_sin32_lut(&sinCosPairedLut[qi * 4 + offset]);
42 i32 m0 = read_sin32_lut(&sinCosPairedLut[qi * 4 + offset + 1]);
43 i32 y1 = read_sin32_lut(&sinCosPairedLut[qi_next * 4 + offset]);
44
45 // Branchless conditional negate derivative
46 m0 = (m0 ^ dmask) - dmask;
47
48 // Quadratic interpolation (Horner form, 2 muls):
49 // P(t) = y0 + T*(m0 + T*(y1 - y0 - m0)) where T = t/65536
50 i32 c = y1 - y0 - m0;
51 i32 r = (i32)((i64)c * t >> 16) + m0;
52 return (i32)(((i64)r * t >> 16) + (i64)y0);
53}
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
FASTLED_FORCE_INLINE i32 read_sin32_lut(const i32 *addr) FL_NOEXCEPT
Definition sin32.h:30
const i32 sinCosPairedLut[]
fl::i64 i64
Definition s16x16x4.h:222

References FASTLED_FORCE_INLINE, FL_NOEXCEPT, offset(), read_sin32_lut(), sinCosPairedLut, and t.

Referenced by sin32(), and sincos32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: