cómo lograr y dibujar la rotación final de un marco con ángulos de Euler.

cómo lograr y dibujar la rotación final de un marco con ángulos de Euler.

Me gustaría hacer la rotación final usando ángulos de Euler. En este enlaceÁngulos de Euler, la rotación final sufre tres rotaciones sucesivas, comenzando en el cuadro (x,y,z), pasando por (x',y',z') y luego (x'',y'',z'') y finalmente terminando con marco (x''',y''',z'''). he visto estocorreoy me ayudó hasta cierto punto. En mi caso, la primera rotación produce

ingrese la descripción de la imagen aquí

La segunda rotación produce

ingrese la descripción de la imagen aquí

Ahora la tercera rotación no arroja lo que está en el enlace antes mencionado.

ingrese la descripción de la imagen aquí

x2, x3 deben apuntar en la misma dirección.

este es el codigo

\documentclass[preview,varwidth ,multi,border=3pt]{standalone}

\usepackage{tikz}  
\usepackage{tikz-3dplot} 
\usepackage[active,tightpage]{preview}  
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{1cm}


\begin{document}

\tdplotsetmaincoords{70}{100}

\begin{tikzpicture}[scale=5,tdplot_main_coords]

\coordinate (O) at (0,0,0);

% main Frame (x,y,z)
\draw[thick,->,line width=0.55mm] (O) -- (2.0,0,0) node[anchor=north west]{$X$};
\draw[thick,->,line width=0.55mm] (O) -- (0,2.0,0) node[anchor=west]      {$Y$};
\draw[thick,->,line width=0.55mm] (O) -- (0,0,2.0) node[anchor=south]     {$Z$};


% define yaw, pitch, and roll
\def \yaw   {30}
\def \roll  {30}
\def \pitch {30}

%_____________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( Yaw )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% First rotation yields Frame 1 (about z axis main)
% Frame 1 (x1,y1, z1)
\tdplotsetrotatedcoords{\yaw}{0}{0}


\draw[thick,->,line width=0.65mm, color=red, tdplot_rotated_coords] 
(O) -- (1.5,0,0) node[xshift=0mm,anchor=north west] {$x^{1}$};
\draw[thick,->,line width=0.65mm, color=red, tdplot_rotated_coords]  
(O) -- (0,1.5,0) node[anchor=west]{$y^{1}$};
\draw[thick,->,line width=0.65mm, color=red, tdplot_rotated_coords]  
(O) -- (0,0,1.5)  node[anchor=south,xshift=3mm, yshift=-1mm]{$z^{1}$};

%_____________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( Pitch )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Second rotation yields Frame 2 (about y1 axis)
% Frame 2 (x2,y2, z2)
\tdplotsetrotatedcoords{\yaw}{\pitch}{0}


\draw[thick,->,line width=0.65mm, color=blue, tdplot_rotated_coords] 
(O) -- (1.0,0,0) node[xshift=0mm,anchor=north west]{$x^{2}$};
\draw[thick,->,line width=0.65mm, color=blue,tdplot_rotated_coords]  
(O) -- (0,1.0,0) node[anchor=west]{$y^{2}$};
\draw[thick,->,line width=0.65mm, color=blue,tdplot_rotated_coords]  
(O) -- (0,0,1.0)  node[anchor=south,xshift=3mm, yshift=-1mm]{$z^{2}$};


%_____________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( Roll )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Third rotation yields Frame 3 (about x2 axis) <-- (it should be )
% Frame 3 (x3,y3,z3)
\tdplotsetrotatedcoords{\yaw}{\pitch}{\roll}


\draw[thick,->,line width=0.65mm, color=green, tdplot_rotated_coords] 
(O) -- (0.5,0,0) node[xshift=0mm,anchor=north west]{$x^{3}$};
\draw[thick,->,line width=0.65mm, color=green,tdplot_rotated_coords]  
(O) -- (0,0.5,0) node[anchor=west]{$y^{3}$};
\draw[thick,->,line width=0.65mm, color=green,tdplot_rotated_coords]  
(O) -- (0,0,.5)  node[anchor=south]{$z^{3}$};


\end{tikzpicture}


\end{document}

Respuesta1

Creo que esto puede ser un duplicado deCoordenadas del sistema de navegación en tikz-3dplot: De forma predeterminada, tikz-3dplotutiliza la secuencia de rotación ZYZ (es decir, primero gira alrededor del eje Z, luego alrededor del nuevo eje Y Y', luego alrededor del nuevo eje Z Z''), mientras desea la secuencia de rotación ZYX. Para ello, hay que redefinir los parámetros de transformación:

\newcommand{\tdseteulerxyz}{
\renewcommand{\tdplotcalctransformrotmain}{%
%perform some trig for the Euler transformation
\tdplotsinandcos{\sinalpha}{\cosalpha}{\tdplotalpha} 
\tdplotsinandcos{\sinbeta}{\cosbeta}{\tdplotbeta}
\tdplotsinandcos{\singamma}{\cosgamma}{\tdplotgamma}
%
\tdplotmult{\sasb}{\sinalpha}{\sinbeta}
\tdplotmult{\sasg}{\sinalpha}{\singamma}
\tdplotmult{\sasbsg}{\sasb}{\singamma}
%
\tdplotmult{\sacb}{\sinalpha}{\cosbeta}
\tdplotmult{\sacg}{\sinalpha}{\cosgamma}
\tdplotmult{\sasbcg}{\sasb}{\cosgamma}
%
\tdplotmult{\casb}{\cosalpha}{\sinbeta}
\tdplotmult{\cacb}{\cosalpha}{\cosbeta}
\tdplotmult{\cacg}{\cosalpha}{\cosgamma}
\tdplotmult{\casg}{\cosalpha}{\singamma}
%
\tdplotmult{\cbsg}{\cosbeta}{\singamma}
\tdplotmult{\cbcg}{\cosbeta}{\cosgamma}
%
\tdplotmult{\casbsg}{\casb}{\singamma}
\tdplotmult{\casbcg}{\casb}{\cosgamma}
%
%determine rotation matrix elements for Euler transformation
\pgfmathsetmacro{\raaeul}{\cacb}
\pgfmathsetmacro{\rabeul}{\casbsg - \sacg}
\pgfmathsetmacro{\raceul}{\sasg + \casbcg}
\pgfmathsetmacro{\rbaeul}{\sacb}
\pgfmathsetmacro{\rbbeul}{\sasbsg + \cacg}
\pgfmathsetmacro{\rbceul}{\sasbcg - \casg}
\pgfmathsetmacro{\rcaeul}{-\sinbeta}
\pgfmathsetmacro{\rcbeul}{\cbsg}
\pgfmathsetmacro{\rcceul}{\cbcg}
}
}

Luego puedes activar la nueva secuencia de rotación usando \tdseteulerxyz.

Aquí está el código completo:

\documentclass[border=3pt]{standalone}

\usepackage{tikz}  
\usepackage{tikz-3dplot}


\newcommand{\tdseteulerxyz}{
\renewcommand{\tdplotcalctransformrotmain}{%
%perform some trig for the Euler transformation
\tdplotsinandcos{\sinalpha}{\cosalpha}{\tdplotalpha} 
\tdplotsinandcos{\sinbeta}{\cosbeta}{\tdplotbeta}
\tdplotsinandcos{\singamma}{\cosgamma}{\tdplotgamma}
%
\tdplotmult{\sasb}{\sinalpha}{\sinbeta}
\tdplotmult{\sasg}{\sinalpha}{\singamma}
\tdplotmult{\sasbsg}{\sasb}{\singamma}
%
\tdplotmult{\sacb}{\sinalpha}{\cosbeta}
\tdplotmult{\sacg}{\sinalpha}{\cosgamma}
\tdplotmult{\sasbcg}{\sasb}{\cosgamma}
%
\tdplotmult{\casb}{\cosalpha}{\sinbeta}
\tdplotmult{\cacb}{\cosalpha}{\cosbeta}
\tdplotmult{\cacg}{\cosalpha}{\cosgamma}
\tdplotmult{\casg}{\cosalpha}{\singamma}
%
\tdplotmult{\cbsg}{\cosbeta}{\singamma}
\tdplotmult{\cbcg}{\cosbeta}{\cosgamma}
%
\tdplotmult{\casbsg}{\casb}{\singamma}
\tdplotmult{\casbcg}{\casb}{\cosgamma}
%
%determine rotation matrix elements for Euler transformation
\pgfmathsetmacro{\raaeul}{\cacb}
\pgfmathsetmacro{\rabeul}{\casbsg - \sacg}
\pgfmathsetmacro{\raceul}{\sasg + \casbcg}
\pgfmathsetmacro{\rbaeul}{\sacb}
\pgfmathsetmacro{\rbbeul}{\sasbsg + \cacg}
\pgfmathsetmacro{\rbceul}{\sasbcg - \casg}
\pgfmathsetmacro{\rcaeul}{-\sinbeta}
\pgfmathsetmacro{\rcbeul}{\cbsg}
\pgfmathsetmacro{\rcceul}{\cbcg}
}
}

\begin{document}
\tdseteulerxyz
\tdplotsetmaincoords{70}{100}

\begin{tikzpicture}[scale=5,tdplot_main_coords]

\coordinate (O) at (0,0,0);

% main Frame (x,y,z)
\draw[thick,->,line width=0.55mm] (O) -- (2.0,0,0) node[anchor=north west]{$X$};
\draw[thick,->,line width=0.55mm] (O) -- (0,2.0,0) node[anchor=west]      {$Y$};
\draw[thick,->,line width=0.55mm] (O) -- (0,0,2.0) node[anchor=south]     {$Z$};


% define yaw, pitch, and roll
\def \yaw   {30}
\def \roll  {30}
\def \pitch {30}

%_____________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( Yaw )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% First rotation yields Frame 1 (about z axis main)
% Frame 1 (x1,y1, z1)
\tdplotsetrotatedcoords{\yaw}{0}{0}


\draw[thick,->,line width=0.65mm, color=red, tdplot_rotated_coords] 
(O) -- (1.5,0,0) node[xshift=0mm,anchor=north west] {$x^{1}$};
\draw[thick,->,line width=0.65mm, color=red, tdplot_rotated_coords]  
(O) -- (0,1.5,0) node[anchor=west]{$y^{1}$};
\draw[thick,->,line width=0.65mm, color=red, tdplot_rotated_coords]  
(O) -- (0,0,1.5)  node[anchor=south,xshift=3mm, yshift=-1mm]{$z^{1}$};

%_____________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( Pitch )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Second rotation yields Frame 2 (about y1 axis)
% Frame 2 (x2,y2, z2)
\tdplotsetrotatedcoords{\yaw}{\pitch}{0}


\draw[thick,->,line width=0.65mm, color=blue, tdplot_rotated_coords] 
(O) -- (1.0,0,0) node[xshift=0mm,anchor=north west]{$x^{2}$};
\draw[thick,->,line width=0.65mm, color=blue,tdplot_rotated_coords]  
(O) -- (0,1.0,0) node[anchor=west]{$y^{2}$};
\draw[thick,->,line width=0.65mm, color=blue,tdplot_rotated_coords]  
(O) -- (0,0,1.0)  node[anchor=south,xshift=3mm, yshift=-1mm]{$z^{2}$};


%_____________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( Roll )%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Third rotation yields Frame 3 (about x2 axis) <-- (it should be )
% Frame 3 (x3,y3,z3)
\tdplotsetrotatedcoords{\yaw}{\pitch}{\roll}


\draw[thick,->,line width=0.65mm, color=green, tdplot_rotated_coords] 
(O) -- (0.5,0,0) node[xshift=0mm,anchor=north west]{$x^{3}$};
\draw[thick,->,line width=0.65mm, color=green,tdplot_rotated_coords]  
(O) -- (0,0.5,0) node[anchor=west]{$y^{3}$};
\draw[thick,->,line width=0.65mm, color=green,tdplot_rotated_coords]  
(O) -- (0,0,.5)  node[anchor=south]{$z^{3}$};


\end{tikzpicture}


\end{document}

información relacionada