He digitalizado un video de una mosca volando en un espacio tridimensional.
En todo momento conozco las coordenadas x, y y z de los siguientes puntos en el cuerpo de la mosca ---
Los puntos son mi elección, y los puntos se pueden colocar en cualquier otro lugar, cualquier número de veces.
Ahora, usando estos puntos, deseo conocer los ángulos del cuerpo (guiñada, cabeceo y balanceo) de la mosca con respecto a un eje fijo.
He intentado lo siguiente (que creo que está mal).
Estoy usando matlab para codificar lo anterior. Sé que tiene que hacerse con ángulos de Euler como en la figura que se muestra aquí:
http://mathworld.wolfram.com/EulerAngles.html
Pero no sé cómo proceder con todas las coordenadas 3D que tengo. Un poco de orientación ayudaría.....
Encuentre el vector que corre de la cola a la cabeza y normalícelo: llame al resultado .
Encuentre el vector que une el punto del ala izquierda con el punto del ala derecha y normalícelo: llame al resultado .
Opcional: verifique la cordura de que
ahora calcula .
Reúna los tres vectores como vectores de columna en la matriz . Esta es la matriz de rotación que rota tu referencia. base en la base alineada con la marcha.
Para convertir a ángulos, necesitamos calcular el eje de rotación y el ángulo de rotación. Esto se hace más fácilmente observando la fórmula de Rodrigues para un miembro general de "hacia atrás"
dónde:
y
dónde son las componentes del eje de rotación y es el ángulo de rotación en radianes. es el miembro del álgebra de Lie que exponencia a la matriz de rotación.
Entonces tomamos la matriz que encontró arriba y compárelo con (1): puede ver en (1) que la parte simétrica sesgada es:
y esto te permitirá leer y el ángulo de rotación .
Por cierto, si estuviera haciendo esto para construir un sistema de seguimiento para la mosca, necesitaría hacer algo como encontrar los mínimos cuadrados que mejor se ajusten a los vectores. y : los vectores de datos sin procesar no serían del todo ortogonales debido a los datos ruidosos. Alternativamente, puede elegir 3 puntos sobre la marcha, rastrearlos y encontrar y como base ortogonal de los tres lados del triángulo. Entonces no tendría que hacer el mejor ajuste de mínimos cuadrados, pero su seguimiento podría ser menos preciso.
floris