Para un fragmento de código que estoy escribiendo para suavizar movimientos necesito calcular el ángulo medio de los últimos 5 ángulos registrados dados (utilizados para dar direccionalidad a un objeto)
Para ello, basta con calcular la mediana de los 5 ángulos anteriores.
Sin embargo, los ángulos indicados oscilan entre 0 y 360 grados, por lo que se plantea un problema inmediato.
Una vez que se mueve más de 360 grados el ángulo se restablece a 0 por lo que si tuviéramos que enviar 0 a la matriz de ángulos anteriores, entonces sucedería lo siguiente:
(355 + 359 + 360 + 360 + 1) / 5 = 287
Ahora, obviamente 287 es completamente el ángulo equivocado y da un movimiento anormal una vez que cruzamos esta frontera de 360 grados.
He intentado comprobar si los valores anteriores están en el lado de 360 o en el lado de 0 y luego ajustar el nuevo valor en consecuencia, pero tenemos un problema con 1; el rendimiento (hay un tiempo de actualización muy corto antes de que afecte a la interfaz de usuario) y 2; cuando llegamos a 720 tendrá que mantener el bucle de nuevo.
Yo no tengo un muy buen fondo con las matemáticas así que pensé que iba a preguntar aquí como mi último recurso, pero ¿hay una manera / fórmula puedo calcular el promedio con la brecha de 360 a 0 en mente y dar un resultado en el lado correcto de esto en lugar de simplemente dar un valor falso?
Gracias por buscar, por favor hágamelo saber si tengo que proporcionar más información para ayudarle :)
Liam