For the 8x8x8 RGB LEDCube
Dependencies: 3DSnake CubeObj LEDCUBE_RGB_888 SPIShiftReg mbed
Fork of 888LEDCUBE_RGB by
FireWorkr.h@0:8d23c4730838, 2017-01-29 (annotated)
- Committer:
- zgtk_r
- Date:
- Sun Jan 29 02:17:18 2017 +0000
- Revision:
- 0:8d23c4730838
For the 8x8x8 RGB LEDCube
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zgtk_r | 0:8d23c4730838 | 1 | #pragma once |
zgtk_r | 0:8d23c4730838 | 2 | |
zgtk_r | 0:8d23c4730838 | 3 | #include "mbed.h" |
zgtk_r | 0:8d23c4730838 | 4 | #include "CubeObj.h" |
zgtk_r | 0:8d23c4730838 | 5 | #include<stdlib.h> |
zgtk_r | 0:8d23c4730838 | 6 | |
zgtk_r | 0:8d23c4730838 | 7 | #define ParticleNUM 50 |
zgtk_r | 0:8d23c4730838 | 8 | |
zgtk_r | 0:8d23c4730838 | 9 | class Fireworks{ |
zgtk_r | 0:8d23c4730838 | 10 | public: |
zgtk_r | 0:8d23c4730838 | 11 | bool isWork; |
zgtk_r | 0:8d23c4730838 | 12 | int sx, sy, bz; |
zgtk_r | 0:8d23c4730838 | 13 | float z; |
zgtk_r | 0:8d23c4730838 | 14 | COL cols[2]; |
zgtk_r | 0:8d23c4730838 | 15 | |
zgtk_r | 0:8d23c4730838 | 16 | CubeObj ff[ParticleNUM]; |
zgtk_r | 0:8d23c4730838 | 17 | |
zgtk_r | 0:8d23c4730838 | 18 | Fireworks(){ |
zgtk_r | 0:8d23c4730838 | 19 | isWork = false; |
zgtk_r | 0:8d23c4730838 | 20 | sx = 0; |
zgtk_r | 0:8d23c4730838 | 21 | sy = 0; |
zgtk_r | 0:8d23c4730838 | 22 | z = 0; |
zgtk_r | 0:8d23c4730838 | 23 | } |
zgtk_r | 0:8d23c4730838 | 24 | void SetColor(COL c1, COL c2){ |
zgtk_r | 0:8d23c4730838 | 25 | cols[0] = c1; |
zgtk_r | 0:8d23c4730838 | 26 | cols[1] = c2; |
zgtk_r | 0:8d23c4730838 | 27 | } |
zgtk_r | 0:8d23c4730838 | 28 | void explSet(int x, int y, int z, float s = 0.8){ |
zgtk_r | 0:8d23c4730838 | 29 | for(int i = 0; i < ParticleNUM; i++){ |
zgtk_r | 0:8d23c4730838 | 30 | if(i % 2 == 0)ff[i].set(s, y, z, cols[0]); |
zgtk_r | 0:8d23c4730838 | 31 | else ff[i].set(x, y, z, cols[1]); |
zgtk_r | 0:8d23c4730838 | 32 | ff[i].set( |
zgtk_r | 0:8d23c4730838 | 33 | (float)(rand()%360)*(PI/180), |
zgtk_r | 0:8d23c4730838 | 34 | (float)(rand()%360)*(PI/180), |
zgtk_r | 0:8d23c4730838 | 35 | (float)(rand()%((int)350))/1000); |
zgtk_r | 0:8d23c4730838 | 36 | } |
zgtk_r | 0:8d23c4730838 | 37 | } |
zgtk_r | 0:8d23c4730838 | 38 | void explosion(){ |
zgtk_r | 0:8d23c4730838 | 39 | for(int i = 0; i < ParticleNUM; i++){ |
zgtk_r | 0:8d23c4730838 | 40 | ff[i].go(); |
zgtk_r | 0:8d23c4730838 | 41 | ff[i].friction(1.05); |
zgtk_r | 0:8d23c4730838 | 42 | ff[i].gravity(0.0005); |
zgtk_r | 0:8d23c4730838 | 43 | } |
zgtk_r | 0:8d23c4730838 | 44 | } |
zgtk_r | 0:8d23c4730838 | 45 | void put(int px, int py, int burnz){ |
zgtk_r | 0:8d23c4730838 | 46 | if(!isWork){ |
zgtk_r | 0:8d23c4730838 | 47 | sx = px; |
zgtk_r | 0:8d23c4730838 | 48 | sy = py; |
zgtk_r | 0:8d23c4730838 | 49 | bz = burnz; |
zgtk_r | 0:8d23c4730838 | 50 | z = 0; |
zgtk_r | 0:8d23c4730838 | 51 | isWork = true; |
zgtk_r | 0:8d23c4730838 | 52 | explSet(sx, sy, bz); |
zgtk_r | 0:8d23c4730838 | 53 | } |
zgtk_r | 0:8d23c4730838 | 54 | } |
zgtk_r | 0:8d23c4730838 | 55 | void Update(){ |
zgtk_r | 0:8d23c4730838 | 56 | if(z > bz){ |
zgtk_r | 0:8d23c4730838 | 57 | explosion(); |
zgtk_r | 0:8d23c4730838 | 58 | z++; |
zgtk_r | 0:8d23c4730838 | 59 | if(z >= bz*50)isWork = false; |
zgtk_r | 0:8d23c4730838 | 60 | } |
zgtk_r | 0:8d23c4730838 | 61 | else{ |
zgtk_r | 0:8d23c4730838 | 62 | if(z <= bz)PutPixel(sx, sy, z, 7); |
zgtk_r | 0:8d23c4730838 | 63 | z += 0.1f; |
zgtk_r | 0:8d23c4730838 | 64 | } |
zgtk_r | 0:8d23c4730838 | 65 | } |
zgtk_r | 0:8d23c4730838 | 66 | }; |