I'm using 3d
and perspective
TikZ libraries for this. I'm also creating three styles:
axis
, to change the axis style if you need. The great part of the drawing are axis, so with this we avoid to change them one by one.
my view
, simply to change the view at the same time in all images.
nutation
, to change the axis accordingly to the 'nutation' angle.
With this we only need a couple of scope
s, one for each image and one more for the central one (the 'nutation' part).
This is my code:
\usetikzlibrary{3d,perspective}
\tikzset
{
axis/.style={thick,-latex},
my view/.style={3d view={65}{20}},
nutation/.style={rotate around x=\nut}
}
\colorlet{my cyan}{cyan!50}
\colorlet{my magenta}{magenta!50!pink}
\begin{document}
\begin{tikzpicture}[line cap=round]
\def\pre{-30} % précession
\def\nut{40} % nutation
\def\rop{30} % rotation propre
% left
\begin{scope}[shift={(-7,0)},my view]
\draw[fill=my cyan] (0,0) circle (2);
\draw[axis] (0,0,0) -- (4,0,0) node[below] {$\vec x_1$};
\draw[axis] (0,0,0) -- (0,4,0) node[right] {$\vec y_1$};
\draw[axis] (0,0,0) -- (0,0,4) node[above] {$\vec z_f=\vec z_1$};
\draw[axis] (0,0,0) -- (\pre:4) node[below] {$\vec x_f$};
\draw[axis] (0,0,0) -- (90+\pre:4) node[below] {$\vec y_f$};
\foreach\i in {0,90}
\draw[-latex] (\i+\pre:2.5) arc (\i+\pre:\i:2.5)
node at (\i+0.5*\pre:3) {$\psi$};
\draw[canvas is xy plane at z=2,->] (90:0.5) arc (90:360:0.5) node[pos=0,right] {Précession $\psi$};
\end{scope}
% center
\begin{scope}[my view]
\draw[fill=my magenta,nutation] (2,0) arc (0:-180:2) -- cycle;
\draw[fill=my cyan] (0,0) circle (2);
\draw[axis] (0,0,0) -- (0,4,0) node[right] {$\vec y_1$};
\begin{scope}[nutation]
\draw[fill=my magenta] (2,0) arc (0:180:2) -- cycle;
\draw[axis] (0,0,0) -- (0,4,0) node[above] {$\vec y_2$};
\draw[axis] (0,0,0) -- (0,0,4) node[above] {$\vec z_2$};
\end{scope}
\foreach\i in {0,90}
\draw[my view,canvas is yz plane at x=0,-latex] (\i:2.5) arc (\i:\i+\nut:2.5)
node at (\i+0.5*\nut:3) {$\theta$};
\draw[axis] (0,0,0) -- (4,0,0) node[below] {$\vec x_1=\vec x_2$};
\draw[axis] (0,0,0) -- (0,0,4) node[above] {$\vec z_1$};
\draw[canvas is yz plane at x=2,->] (-90:0.5) arc (-90:170:0.5) node[pos=0.3,right] {Nutation $\theta$};
\end{scope}
% right
\begin{scope}[shift={(7,0)},my view,nutation]
\draw[fill=my magenta] (0,0) circle (2);
\draw[axis] (0,0,0) -- (4,0,0) node[right] {$\vec x_2$};
\draw[axis] (0,0,0) -- (0,4,0) node[above] {$\vec y_2$};
\draw[axis] (0,0,0) -- (0,0,4) node[above] {$\vec z_2=\vec z_3$};
\draw[axis] (0,0,0) -- (\rop:4) node[right] {$\vec x_3$};
\draw[axis] (0,0,0) -- (90+\rop:4) node[above] {$\vec y_3$};
\foreach\i in {0,90}
\draw[-latex] (\i:2.5) arc (\i:\i+\rop:2.5)
node at (\i+0.5*\rop:3) {$\varphi$};
\draw[canvas is xy plane at z=2,->] (-90:0.5) arc (-90:160:0.5) node[yshift=-4mm,pos=0,text width=2cm] {Rotation propre $\varphi$};
\end{scope}
\end{tikzpicture}
\end{document}
And the output:
Update 1: The second figure:
\documentclass[tikz,border=2.718mm]{standalone}
\begin{document}
\begin{tikzpicture}[line cap=round]
% axis
\foreach\i in {1,2,3}
{
\begin{scope}[shift={(6*\i,0)}]
\foreach\j in {0,1}
{
\draw[thick,latex-latex,rotate=20*\j] (0,4) coordinate (Y\i\j) |- (4,0) coordinate (X\i\j);
\draw[->] (90*\j:3) arc (90*\j:90*\j+20:3) coordinate[midway] (A\i\j);
}
\draw[fill=white] (0,0) circle (0.2);
\fill (0,0) coordinate (O\i) circle (0.1);
\coordinate (P\i) at (2,3);
\end{scope}
}
% left
\node[yshift=-5mm] at (O1) {\strut$\vec z_f=\vec z_1$};
\node[right] at (X10) {\strut$\vec x_f$};
\node[above] at (Y10) {\strut$\vec y_f$};
\node[right] at (X11) {\strut$\vec x_1$};
\node[above] at (Y11) {\strut$\vec y_1$};
\node[right] at (A10) {\strut$\psi$};
\node[above] at (A11) {\strut$\psi$};
\node at (P1) {\strut Précession};
% center
\node[yshift=-5mm] at (O2) {\strut$\vec x_1=\vec x_2$};
\node[right] at (X20) {\strut$\vec y_1$};
\node[above] at (Y20) {\strut$\vec z_1$};
\node[right] at (X21) {\strut$\vec y_2$};
\node[above] at (Y21) {\strut$\vec z_2$};
\node[right] at (A20) {\strut$\theta$};
\node[above] at (A21) {\strut$\theta$};
\node at (P2) {\strut Nutation};
% right
\node[yshift=-5mm] at (O3) {\strut$\vec z_2=\vec z_1$};
\node[right] at (X30) {\strut$\vec x_2$};
\node[above] at (Y30) {\strut$\vec y_2$};
\node[right] at (X31) {\strut$\vec x_3$};
\node[above] at (Y31) {\strut$\vec y_3$};
\node[right] at (A30) {\strut$\varphi$};
\node[above] at (A31) {\strut$\varphi$};
\node at (P3) {\strut Rotation propre};
\end{tikzpicture}
\end{document}
Update 2: a second version for the second figure, using a \pic
(almost the same output):
\tikzset
{%
pics/axis/.style n args={7}{
% #1 = x axis label (without subscript): x,y,z
% #2 = y axis label (without subscript): x,y,z
% #3 = z axis label (without subscript): x,y,z
% #4 = original axis label (subscript)
% #5 = rotated axis label (subscript)
% #6 = angle
% #7 = figure label
code={%
\draw[thick,latex-latex] (0,4) node[above] {\strut$\vec#2_#4$} |- (4,0) node[right] {\strut$\vec#1_#4$};
\draw[thick,latex-latex,rotate=20] (0,4) node[above] {\strut$\vec#2_#5$} |- (4,0) node[right] {\strut$\vec#1_#5$};
\foreach\j in {0,1}
\draw[->] (90*\j:3) arc (90*\j:90*\j+20:3) node at (90*\j+10:3.25) {$#6$};
\draw[fill=white] (0,0) circle (0.2);
\fill (0,0) circle (0.1);
\node at (0,-0.5) {\strut$\vec#3_#4=\vec#3_#5$};
\node at (2,3) {\strut#7};
}}
}
\begin{document}
\begin{tikzpicture}[line cap=round]
\pic at (0,0) {axis={x}{y}{z}{f}{1}{\psi}{Precéssion}};
\pic at (6,0) {axis={y}{z}{x}{1}{2}{\theta}{Nutation}};
\pic at (12,0) {axis={x}{y}{z}{2}{3}{\varphi}{Rotation propre}};
\end{tikzpicture}
\end{document}