Tengo ángulos de cabeceo, alabeo y guiñada en ese orden (Euler 321) para aplicar a un marco de referencia del cuerpo en el sistema de coordenadas cartesianas. Quiero saber cuáles son las coordenadas vectoriales del marco de referencia del cuerpo después de aplicar esos ángulos.
Comienzo con un marco de referencia ortonormal $R$, aplico las matrices de rotación $R_Z$ luego $R_Y$ y $R_X$, las cuales son: $$R_{X}(\theta) = \begin{pmatrix}1 & 0 & 0 \\ 0 & \cos \theta & -\sin \theta \\ 0 & \sin \theta & \cos \theta\end{pmatrix},\qquad R_{Y}(\theta) = \begin{pmatrix}\cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ -\sin \theta & 0 & \cos \theta\end{pmatrix},\qquad R_{Z}(\theta) = \begin{pmatrix}\cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1\end{pmatrix}.$$ He asumido que las matrices de rotación rotan alrededor del eje correspondiente del marco de referencia al que se aplica, no del sistema de coordenadas, sin embargo, Matlab parece decir lo contrario cuando dibujo los marcos de referencia antes y después: la guiñada es correcta porque es la primera operación, pero durante el cabeceo, el eje Y del cuerpo no es invariante, por ejemplo.
En contraste, intenté reemplazar cada una de las matrices de rotación previamente definidas en: $$MarcoRefRotado=R_XR_YR_ZMarcoRef$$ Por la matriz de rotación alrededor de un eje arbitrario: $$R_u = \begin{bmatrix} \cos \theta +u_x^2 \left(1-\cos \theta\right) & u_x u_y \left(1-\cos \theta\right) - u_z \sin \theta & u_x u_z \left(1-\cos \theta\right) + u_y \sin \theta \\ u_y u_x \left(1-\cos \theta\right) + u_z \sin \theta & \cos \theta + u_y^2\left(1-\cos \theta\right) & u_y u_z \left(1-\cos \theta\right) - u_x \sin \theta \\ u_z u_x \left(1-\cos \theta\right) - u_y \sin \theta & u_z u_y \left(1-\cos \theta\right) + u_x \sin \theta & \cos \theta + u_z^2\left(1-\cos \theta\right) \end{bmatrix}$$ Quitando los ejes del marco de referencia, y funciona.
Por lo tanto, mi pregunta es: ¿las matrices de rotación rotan sobre los ejes del CUERPO de la geometría rotada, o sobre ejes INERCIALES? En el primer caso significaría que tengo un error en mi código, pero simplificarlo al límite de ser solo las matemáticas presentadas y depurándolo minuciosamente paso a paso no ha revelado ningún error.