#include #include #include #include #include "libsldj/util.h" Color lineScanner(uint16_t x, uint16_t y, uint32_t frameNumber) { uint8_t c = 0; uint8_t scale = random() % 2 + 7; if (frameNumber % 1024 >= 600) { uint8_t section = frameNumber % 300; if (section >= 200) { c = (x >> 8) + (uint8_t)(hypot(x >> 8, y >> 8) * (frameNumber % 255)); } else if (section >= 100) { c = (x >> 8) + (uint8_t)(hypot(cos(x >> scale), sin(y >> scale)) * (frameNumber % 255)); } else { c = frameNumber + hypot((x - 32768) >> scale, (y - 32768) >> scale); } } else { uint8_t c1 = (x >> 8) + (uint8_t)(hypot(x >> 8, y >> 8) * (frameNumber % 255)); uint8_t c2 = (x >> 8) + (uint8_t)(hypot(cos(x >> scale), sin(y >> scale)) * (frameNumber % 255)); uint8_t c3 = frameNumber + hypot((x - 32768) >> scale, (y - 32768) >> scale); c = c1 & c2 & c3; } return (Color){ .r = (uint8_t)(sin(c) * 127), .g = c - 127, .b = c, .a = 255 }; }