For the 8x8x8 RGB LEDCube
Dependencies: 3DSnake CubeObj LEDCUBE_RGB_888 SPIShiftReg mbed
Fork of 888LEDCUBE_RGB by
FireWorkr.h
- Committer:
- zgtk_r
- Date:
- 2017-01-29
- Revision:
- 0:8d23c4730838
File content as of revision 0:8d23c4730838:
#pragma once #include "mbed.h" #include "CubeObj.h" #include<stdlib.h> #define ParticleNUM 50 class Fireworks{ public: bool isWork; int sx, sy, bz; float z; COL cols[2]; CubeObj ff[ParticleNUM]; Fireworks(){ isWork = false; sx = 0; sy = 0; z = 0; } void SetColor(COL c1, COL c2){ cols[0] = c1; cols[1] = c2; } void explSet(int x, int y, int z, float s = 0.8){ for(int i = 0; i < ParticleNUM; i++){ if(i % 2 == 0)ff[i].set(s, y, z, cols[0]); else ff[i].set(x, y, z, cols[1]); ff[i].set( (float)(rand()%360)*(PI/180), (float)(rand()%360)*(PI/180), (float)(rand()%((int)350))/1000); } } void explosion(){ for(int i = 0; i < ParticleNUM; i++){ ff[i].go(); ff[i].friction(1.05); ff[i].gravity(0.0005); } } void put(int px, int py, int burnz){ if(!isWork){ sx = px; sy = py; bz = burnz; z = 0; isWork = true; explSet(sx, sy, bz); } } void Update(){ if(z > bz){ explosion(); z++; if(z >= bz*50)isWork = false; } else{ if(z <= bz)PutPixel(sx, sy, z, 7); z += 0.1f; } } };