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;
int x
Definition simple.h:92
Parameters
thetainput angle from 0-255
Returns
sin of theta, value between 0 and 255

Definition at line 240 of file trig8.h.

240 {
241 uint8_t offset = theta;
242 if (theta & 0x40) {
243 offset = (uint8_t)255 - offset;
244 }
245 offset &= 0x3F; // 0..63
246
247 uint8_t secoffset = offset & 0x0F; // 0..15
248 if (theta & 0x40)
249 ++secoffset;
250
251 uint8_t section = offset >> 4; // 0..3
252 uint8_t s2 = section * 2;
253 const uint8_t *p = b_m16_interleave;
254 p += s2;
255 uint8_t b = *p;
256 ++p;
257 uint8_t m16 = *p;
258
259 uint8_t mx = (m16 * secoffset) >> 4;
260
261 int8_t y = mx + b;
262 if (theta & 0x80)
263 y = -y;
264
265 y += 128;
266
267 return y;
268}
int y
Definition simple.h:93
UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
const uint8_t b_m16_interleave[]
Pre-calculated lookup table used in sin8() and cos8() functions.
Definition trig8.h:165

References b_m16_interleave, LIB8STATIC, offset(), and y.

+ Here is the call graph for this function: