#include "effect_twirl.h" #include "functions.h" void TwirlEffect::loop() { double center_x = _real_center_x; // - (cos8(_center_offset_angle)>>6); double center_y = _real_center_y; // + (sin8(_center_offset_angle)>>6); for (int x=0; xwidth; x++) for (int y=0; yheight; y++) { uint8_t angle = atan2(y - center_y, x - center_x) / M_PI * 128 + 128 + angleOffset; uint16_t distance = sqrt16((center_x - x) * (center_x - x) + (center_y - y) * (center_y - y)); if (distance > 255) distance = 255; angle -= distance << 2; CRGB color(CHSV(angle, 255, 255 - distance*16)); window->setPixel(x, y, &color); } angleOffset += 1; if (angleOffset % 17 == 0) _center_offset_angle++; }