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

◆ sin8_C()

LIB8STATIC uint8_t sin8_C ( uint8_t theta)

Fast 8-bit approximation of sin(x).

This approximation never varies more than 2% from the floating point value you'd get by doing

float s = (sin(x) * 128.0) + 128;
uint32_t x[NUM_LAYERS]
Definition Fire2023.ino:80
Parameters
thetainput angle from 0-255
Returns
sin of theta, value between 0 and 255

Definition at line 226 of file trig8.h.

226 {
227 uint8_t offset = theta;
228 if (theta & 0x40) {
229 offset = (uint8_t)255 - offset;
230 }
231 offset &= 0x3F; // 0..63
232
233 uint8_t secoffset = offset & 0x0F; // 0..15
234 if (theta & 0x40)
235 ++secoffset;
236
237 uint8_t section = offset >> 4; // 0..3
238 uint8_t s2 = section * 2;
239 const uint8_t *p = b_m16_interleave;
240 p += s2;
241 uint8_t b = *p;
242 ++p;
243 uint8_t m16 = *p;
244
245 uint8_t mx = (m16 * secoffset) >> 4;
246
247 int8_t y = mx + b;
248 if (theta & 0x80)
249 y = -y;
250
251 y += 128;
252
253 return y;
254}
uint32_t y[NUM_LAYERS]
Definition Fire2023.ino:81
const uint8_t b_m16_interleave[]
Pre-calculated lookup table used in sin8() and cos8() functions.
Definition trig8.h:151
static FASTLED_NAMESPACE_BEGIN uint8_t const p[]
Definition noise.cpp:56

References b_m16_interleave, LIB8STATIC, p, and y.