// aspimaker — Mesa cinética
// Interpola un movimiento polar repartiendo pasos entre ángulo y radio.
// Licencia: CC BY-NC-SA 4.0 — https://creativecommons.org/licenses/by-nc-sa/4.0/
//
// PASOS_POR_GRADO y PASOS_POR_MM dependen de la reducción y de los microsteps.

void moverPolar(float angulo, float radio, unsigned int avance) {
  const long dA = lround(angulo * PASOS_POR_GRADO);
  const long dR = lround(radio * PASOS_POR_MM);
  const long n = max(labs(dA), labs(dR));

  for (long i = 1; i <= n; i++) {
    pasoAngulo((dA * i) / n - (dA * (i - 1)) / n);
    pasoRadio((dR * i) / n - (dR * (i - 1)) / n);
    delayMicroseconds(avance);
  }
}
