tempest.ino 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include <EEPROM.h> //' A{
  2. #include <SPI.h>
  3. #include <GD2.h>
  4. static int x0[17], yy0[17];
  5. static int x1[17], yy1[17];
  6. void setup()
  7. {
  8. Serial.begin(115200); // JCB
  9. GD.begin();
  10. for (byte th = 0; th < 17; th++) {
  11. int x, y;
  12. GD.polar(x, y, 16 * 128, th << 12);
  13. x0[th] = 16 * 240 + x;
  14. yy0[th] = 16 * 136 + y;
  15. GD.polar(x, y, 16 * 16, th << 12);
  16. x1[th] = 16 * 240 + x;
  17. yy1[th] = 16 * 190 + y;
  18. }
  19. }
  20. static void polar(int r, uint16_t th)
  21. {
  22. int x, y;
  23. GD.polar(x, y, 16 * r, th);
  24. GD.Vertex2f(16 * 240 + x, 16 * 136 + y);
  25. }
  26. static void drawgame()
  27. {
  28. GD.ColorRGB(0x2020ff);
  29. GD.Begin(LINE_STRIP);
  30. for (byte i = 0; i < 17; i++)
  31. GD.Vertex2f(x0[i], yy0[i]);
  32. GD.Begin(LINE_STRIP);
  33. for (byte i = 0; i < 17; i++)
  34. GD.Vertex2f(x1[i], yy1[i]);
  35. GD.Begin(LINES);
  36. for (byte i = 0; i < 17; i++) {
  37. GD.Vertex2f(x0[i], yy0[i]);
  38. GD.Vertex2f(x1[i], yy1[i]);
  39. }
  40. GD.ColorRGB(0xffff00);
  41. GD.Begin(LINE_STRIP);
  42. polar(128, 0x3000);
  43. polar(142, 0x3900);
  44. polar(128, 0x4000);
  45. polar(118, 0x3c00);
  46. polar(128, 0x3e00);
  47. polar(134, 0x3900);
  48. polar(128, 0x3300);
  49. polar(118, 0x3400);
  50. polar(128, 0x3000);
  51. }
  52. void loop()
  53. {
  54. GD.Clear(); // Clear to black //' draw{
  55. GD.ColorA(0x30); // Draw background glows
  56. GD.LineWidth(48);
  57. drawgame();
  58. GD.ColorA(0xff); // Draw foreground vectors
  59. GD.LineWidth(10);
  60. GD.BlendFunc(SRC_ALPHA, ONE); // additive blending
  61. drawgame(); //' }draw
  62. GD.swap();
  63. // GD.dumpscreen(); // JCB
  64. }