6 votos

Calcular el ángulo medio después de cruzar 360 grados

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

6voto

kristof dl Puntos 26

Una forma sencilla de solucionarlo es convertir los rumbos (ángulos) a coordenadas cartesianas, calcular la media de los componentes x e y por separado y, a continuación, volver a convertirlos a rumbos. Así que la respuesta es: AnguloPromedio = ATAN2(suma_de_sin(theta), suma_de_cos(theta))

1voto

Shabaz Puntos 403

Si los ángulos están cerca, puedes hacerlo. Tu idea de elegir el múltiplo de 360 es correcta. Si están muy próximos, basta con comprobar si la media se aproxima a una muestra y sumar o restar $72$ grados $(\frac {360}5)$ según sea necesario.

Si los ángulos no están próximos, el concepto de media no está bien definido. ¿Cuál es la media de $0,70,140,210,280?$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X