charlie-cube/planarFlop3D.ino
2022-04-18 22:39:19 -04:00

106 lines
2.5 KiB
C++

/******************************* PLANAR FLOP 3D *******************************\
| Version 2 of the planar flop, doing more complicated maths and 3D vectors |
| 'n stuff. Making this function found the bug of reversed z axis line drawing |
| |
| Modified By: S. Dugre to use asynchronous timer |
\******************************************************************************/
int loop1, loop2, case_pf;
void planarFlop3D() {
if (currentState != lastState) {
lastState = currentState;
Serial.print("New State = ");
Serial.println(currentState);
currentTimer = 0;
maxTimer = 0.1 * 1000 * 1000 / 16; // 100 ms
loop1 = loop2 = case_pf = 0;
}
if (timerReset) {
switch (case_pf) {
case 0:
drawLine(color, 0, 3, loop2, 3, 3-loop1, loop2);
break;
case 1:
drawLine(color, 0, 3, loop2, 3-loop1, 0, loop2);
break;
case 2:
drawLine(color, 0, loop2, 0, loop1, loop2, 3);
break;
case 3:
drawLine(color, 0, loop2, 0, 3, loop2, 3-loop1);
break;
case 4:
drawLine(color, loop2, 0, 0, loop2, 3, loop1);
break;
case 5:
drawLine(color, loop2, 0, 0, loop2, 3-loop1, 3);
break;
case 6:
drawLine(color, 3, 0, loop2, 0, loop1, loop2);
break;
case 7:
drawLine(color, 3, 0, loop2, loop1, 3, loop2);
break;
case 8:
drawLine(color, 3, loop2, 3, 3-loop1, loop2, 0);
break;
case 9:
drawLine(color, 3, loop2, 3, 0, loop2, loop1);
break;
case 10:
drawLine(color, loop2, 3, 3, loop2, 0, 3-loop1);
break;
case 11:
drawLine(color, loop2, 3, 3, loop2, loop1, 0);
break;
}
switch(loop2){
case 0 ... 2:
loop2++;
break;
case 3:
loop2 = 0;
switch(loop1){
case 0 ... 1:
loop1++;
break;
case 2:
loop1 = 0;
switch(case_pf){
case 0 ... 10:
case_pf++;
break;
case 11:
color = nextColor(color);
case_pf = 0;
break;
}
break;
}
flushBuffer();
clearBuffer();
timerReset = false;
break;
}
}
}