/******************************* 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; } } }