For the 8x8x8 RGB LEDCube

Dependencies:   3DSnake CubeObj LEDCUBE_RGB_888 SPIShiftReg mbed

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?

UserRevisionLine numberNew 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 };