1#ifndef FASTLED_INTERNAL
2#define FASTLED_INTERNAL
17 for (
size_t i = 0; i <
mParticles.size(); ++i) {
23 if (max_particles <= 0) {
26 if (
static_cast<int>(
mParticles.size()) == max_particles) {
30 mParticles.resize(
static_cast<size_t>(max_particles));
31 for (
size_t i = 0; i <
mParticles.size(); ++i) {
38 const float cx =
static_cast<float>(
getWidth() - 1) * 0.5f;
39 const float cy =
static_cast<float>(
getHeight() - 1) * 0.5f;
44 int I =
static_cast<int>(tt / 50);
45 uint8_t n1 =
inoise8(
static_cast<uint16_t
>(I * 19));
46 float noiseW = (
static_cast<float>(n1) / 255.0f) *
static_cast<float>(
getWidth());
48 p.
a =
static_cast<float>(tt) * 1.25f + noiseW;
49 p.
f = (tt & 1u) ? +1 : -1;
59 const uint16_t idx =
mXyMap.mapToIndex(
static_cast<uint16_t
>(
x),
static_cast<uint16_t
>(
y));
66 int R =
static_cast<int>(
fl::ceil(r));
68 int cx =
static_cast<int>(fx + (fx >= 0.0f ? 0.5f : -0.5f));
69 int cy =
static_cast<int>(fy + (fy >= 0.0f ? 0.5f : -0.5f));
71 for (
int dy = -R; dy <= R; ++dy) {
72 for (
int dx = -R; dx <= R; ++dx) {
73 float d2 =
static_cast<float>(dx * dx + dy * dy);
75 float fall = 1.0f - (d2 / (r2 + 0.0001f));
76 float vf = 255.0f * fall;
77 if (vf < 0.0f) vf = 0.0f;
78 if (vf > 255.0f) vf = 255.0f;
79 uint8_t v =
static_cast<uint8_t
>(vf);
94 size_t idx =
static_cast<size_t>(
mTick %
static_cast<fl::u32
>(
mParticles.size()));
99 for (
size_t i = 0; i <
mParticles.size(); ++i) {
113 float tOver99 =
static_cast<float>(
mTick) / 99.0f;
114 uint8_t n2 =
inoise8(
static_cast<uint16_t
>(tOver99 * 4096.0f),
static_cast<uint16_t
>(p.
g * 37));
115 float n2c = (
static_cast<int>(n2) - 128) / 255.0f;
118 float aa = p.
a *
static_cast<float>(p.
f);
uint16_t xyMap(uint16_t x, uint16_t y) const
uint16_t getHeight() const
uint16_t getWidth() const
uint16_t getNumLeds() const
void resetParticle(Particle &p, fl::u32 tick)
Luminova(const XYMap &xyMap, const Params ¶ms=Params())
void plotDot(CRGB *leds, int x, int y, uint8_t v) const
fl::vector< Particle > mParticles
void draw(DrawContext context) override
void setMaxParticles(int max_particles)
void plotSoftDot(CRGB *leds, float fx, float fy, float s) const
void blur2d(CRGB *leds, fl::u8 width, fl::u8 height, fract8 blur_amount, const XYMap &xymap)
Two-dimensional blur filter.
uint8_t inoise8(uint16_t x, uint16_t y, uint16_t z)
8-Bit, fixed point implementation of Perlin's noise.
LIB8STATIC_ALWAYS_INLINE uint8_t scale8(uint8_t i, fract8 scale)
Scale one byte by a second one, which is treated as the numerator of a fraction whose denominator is ...
void fadeToBlackBy(CRGB *leds, fl::u16 num_leds, fl::u8 fadeBy)
FASTLED_FORCE_INLINE T clamp(T value, T min, T max)
Representation of an RGB pixel (Red, Green, Blue)
Representation of an HSV pixel (hue, saturation, value (aka brightness)).