#include <TFT_eSPI.h>
#include <SPI.h>       // this is needed for display

#include <ArduinoTrace.h>

//This display 320 x 240 pixels; TTGO display 240 x 135
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library with default width and height

int rm=115;  //magenta circle radius
int cx=120;  //x_center of the circle
int cy=160;  //y_center of the circle

//------ TODO: additional global variables declaration ----------//
#define PI_DIV_180 0.0174532925 // Macro para eliminar magic number en conversion de grad -> rad
#define MAX_GRADS 360
#define NUM_LINES 12

float sx = 0, sy = 1;  
uint16_t x0=0, x1=0, yy0=0, yy1=0;

uint16_t colors[2] = {TFT_GREEN, TFT_BLACK};
//---------------------------------------------------------------//

void setup(void) {
  Serial.begin(115200);
  Serial.println("INICIO:");
  
  tft.init();
  tft.setRotation(0);
  
  // Draw magenta circle
  tft.drawCircle(cx,cy,rm, TFT_MAGENTA);
}

void loop() {

  //----- TODO: WRITE REQUIRED CODE ------------ ---------//
  // Dibuja las 8 líneas
  for (int i = 0, j = 0; i < MAX_GRADS; i += (MAX_GRADS / NUM_LINES), j++) {
    sx = cos((i - 90) * PI_DIV_180); // Calcula la coordenada x del extremo de la línea
    sy = sin((i - 90) * PI_DIV_180); // Calcula la coordenada y del extremo de la línea
    
    // sx * radio_inicio + cordenada_inicio
    x0 = sx * (-rm) + cx; // Calcula la coordenada x del inicio de la línea
    yy0 = sy * (-rm) + cy; // Calcula la coordenada y del inicio de la línea
    
    // sx * radio_final + cordenada_inicio
    x1 = sx * rm + cx; // Calcula la coordenada x del final de la línea
    yy1 = sy * rm + cy; // Calcula la coordenada y del final de la línea

    // Si ya ha dibujado todas las lineas, las borra, si no hay ninguna, las dibuja
    uint16_t selected_color_index;
    if ((j % 12) >= 6)
      selected_color_index = 1; // Borrar
    else
      selected_color_index = 0; // Dibujar

    tft.drawLine(x0, yy0, x1, yy1, colors[selected_color_index]); // Dibuja la línea
    delay(500);
  }

  //------------------------------------------------------//
      
}