#ifndef PLASMAMATRIX_H #define PLASMAMATRIX_H #include "MatrixAnimation.h" #include "LEDHAL2D.h" class PlasmaMatrix : public MatrixAnimation { public: PlasmaMatrix(LEDHAL2D* _matrix, char* _refName, long _updateTime) : MatrixAnimation(_matrix, _refName, _updateTime), paletteShift(0), palette(new CRGB[256]) { plasma = new uint8_t*[matrix->getWidth()]; for(uint16_t i = 0; i < matrix->getWidth(); i++) { plasma[i] = new uint8_t[matrix->getHeight()]; } for(uint16_t x = 0; x < matrix->getWidth(); x++) { for(uint16_t y = 0; y < matrix->getHeight(); y++) { plasma[x][y] = (uint8_t) ((128.0 + (128 * sinf(x / 8.0)) + 128 + (128.0 * sinf(y / 8.0))) / 2); } } for(uint16_t i = 0; i < 256; i++) { palette[i] = CRGB(CHSV(i, 255, 255)); } } virtual ~PlasmaMatrix() { delete[] palette; for(uint16_t i = 0; i < matrix->getWidth(); i++) { delete[] plasma[i]; } delete[] plasma; } void initialize() { paletteShift = 0; } void execute(); private: uint16_t paletteShift; CRGB* palette; uint8_t** plasma; }; #endif