106 lines
2.5 KiB
C++
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;
|
|
}
|
|
}
|
|
}
|