Estoy tratando de escribir una función que determine si un arco circular viaja en el sentido de las agujas del reloj o en sentido contrario.
Dadas las coordenadas X,Y para el punto inicial, el punto central y el punto final, primero calculo el ángulo en radianes desde el punto central hasta los puntos inicial y final.
Pensé que si restaba el ángulo de la línea final del ángulo de la línea inicial podría determinar si la dirección del arco es así:
if (angle1 - angle2 <= 0): # Clockwise
else: # Counter-Clockwise
Esto funciona para los casos en los que el arco no cruza la línea de los radios cero. Pero si el arco cruza esa línea la lógica no funciona.
Esta ilustración muestra que el arco S1-C-E1 funciona pero S2-C-E2 no. Estoy bastante seguro de que tengo la idea correcta, sólo estoy atascado en la parte lógica.
Encontré otra pregunta aquí que parecía ser similar a lo que estoy tratando de hacer, pero su respuesta implicaba una matriz que, me entristece admitir, nunca he aprendido a trabajar con ella. Necesito una respuesta que pueda traducir fácilmente en código o introducir en una hoja de cálculo.
Gracias por toda la ayuda.