Tengo dos ángulos normalizados (entre 0 y 360 grados) y quiero encontrar la dirección de giro más corta del punto a al punto b . (en sentido horario o antihorario). a o b pueden estar en cualquier parte del círculo, por lo que la función debería funcionar en ambos sentidos: si a es menor y si a es mayor que b .
Escribí la siguiente función, que funciona bien excepto cuando la distancia más corta cruza la marca de 0 grados:
function clockwise(a, b){ return a < b; }La función devuelve verdadero si es en el sentido de las agujas del reloj y falso si la dirección es en el sentido contrario a las agujas del reloj.
¿Cómo puedo hacer que esto funcione para distancias que cruzan el ángulo de 0 grados? Estoy buscando una implementación específicamente en JavaScript, ya que no pude traducir ninguna de las explicaciones matemáticas que encontré. ¡Gracias por adelantado!
Con respecto al punto a,
function clockwise(a, b){ let theta1 = ba; return theta1 >= 0 && theta1 <= 180; // return true if clockwise }Probablemente haya una solución más elegante, pero creo que esto da los resultados esperados.
(si a=60, b=230 la diferencia es 170 y en el sentido de clockwise=true es correcto...?!)
function clockwise(a, b) { let clockwise, diff if (b > a) { diff = b - a clockwise = diff >= 0 && diff <= 180 } else { diff = a - b clockwise = diff >= 180 } return clockwise } console.log(clockwise(60,230)) // true console.log(clockwise(220,150)) // false console.log(clockwise(40,300)) // false console.log(clockwise(120,214)) // true