¿Dos discos en rotación alrededor del eje z usando tikz-3dplot?

¿Dos discos en rotación alrededor del eje z usando tikz-3dplot?

Soy principiante con tikz-3dplot, quiero dibujar esta figura. ingrese la descripción de la imagen aquí

Utilicé la explicación dada enJohn Kormylo,

\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{patterns}% comme shading pour remplir une surface
\begin{document}

%\pgfmathsetmacro{\iAngle}{0}
\tdplotsetmaincoords{70}{110}
\foreach \iAngle in {1,10,...,360}
{
\begin{tikzpicture}[scale=5,tdplot_main_coords]
\coordinate (O) at (0,0,0);
\draw[thick,->] (O) -- (1.5,0,0) node[anchor=north]{$x$};
\draw[thick,->] (O) -- (0,1,0) node[anchor=west]{$y$};
\draw[thick,->] (O) -- (0,0,1) node[anchor=south]{$z$};
\draw[thick, opacity=0.3]
  (0,0,0) -- (1.5,0,0) -- (1.5,1,0) -- (0,1,0) -- cycle;
\fill[pattern=dots,opacity=0.5]
  (0,0,0) -- (1.5,0,0) -- (1.5,1,0) -- (0,1,0) -- cycle; 

  \fill[red,thick] (0,0,0.3) circle (0.3pt) node[left] {$O_1$};

\tdplotsetrotatedcoords{\iAngle}{0}{0}
\begin{scope}[tdplot_rotated_coords]
\draw[red,thick, ->]
 (0.6,0,0.3) -- (1.5,0,0.3) node[above] {$x_1$};
\draw[red,thick, ->]
 (0,0,0.3) -- (0,1,0.3) node[above] {$y_1$};
 \draw[thick, dashed, opacity=1]
  (0,0,0) -- (1.5,0,0);
   \fill[blue,thick] (0.6,0,0.3) circle (0.3pt) node[above] {$A_1$};
    \fill[blue,thick] (1.2,0,0.3) circle (0.3pt) node[above] {$A_2$};
    \draw[pattern=north west lines, pattern color=blue, opacity=0.5 ] (0.6,0,0.3) circle (0.7); 
     \draw[pattern=north west lines, pattern color=green, opacity=0.5 ] (1.2,0,0.3) circle (0.7);
      \draw[thick, dashed, opacity=1]
  (0,0,0.3) -- (0.6,0,0.3);
  \draw[thick, line, opacity=1]
  (0.6,0,0.3) -- (1.2,0,0.3);
\end{scope}
\end{tikzpicture}
}
\end{document}

Obtuve la siguiente figura, pero no está completa,

ingrese la descripción de la imagen aquí

¿Cómo puedo arreglar las coordenadas principales de la animación?

¿Cómo sumar vectores unitarios relacionados con discos?

¿Qué ángulo puede darme una vista divertida?

¿Alguien puede ayudarme a lograr este trabajo?

Respuesta1

Eliminé el lineargumento defectuoso, hice un cuadro delimitador de manera que la imagen no salte y, lo más importante, hice los círculos ortogonales a los ejes de rotación.

\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{patterns}% comme shading pour remplir une surface
\begin{document}

\pgfmathsetmacro{\RelativeSpeed}{0.3}
\tdplotsetmaincoords{70}{110}
\foreach \iAngle in {1,5,...,360}
{
\begin{tikzpicture}[scale=5,tdplot_main_coords]
\useasboundingbox[tdplot_screen_coords] (-1.8,-1) rectangle (1.4,1.4);
\coordinate (O) at (0,0,0);
\draw[thick,->] (O) -- (1.5,0,0) node[anchor=north]{$x$};
\draw[thick,->] (O) -- (0,1,0) node[anchor=west]{$y$};
\draw[thick,->] (O) -- (0,0,1) node[anchor=south]{$z$};
\draw[thick, opacity=0.3]
  (0,0,0) -- (1.5,0,0) -- (1.5,1,0) -- (0,1,0) -- cycle;
\fill[pattern=dots,opacity=0.5]
  (0,0,0) -- (1.5,0,0) -- (1.5,1,0) -- (0,1,0) -- cycle; 

  \fill[red,thick] (0,0,0.3) circle (0.3pt) node[left] {$O_1$};

\tdplotsetrotatedcoords{\iAngle}{00}{0}
\begin{scope}[tdplot_rotated_coords]
\draw[red,thick, ->]
 (0.6,0,0.3) -- (1.5,0,0.3) node[above] {$x_1$};
\draw[red,thick, ->]
 (0,0,0.3) -- (0,1,0.3) node[above] {$y_1$};
 \draw[thick, dashed, opacity=1]
  (0,0,0) -- (1.5,0,0);
   \coordinate[label=above:$A_1$] (A1) at (0.6,0,0.3);
   \coordinate[label=above:$A_2$] (A2) at (1.2,0,0.3);
   \fill[blue,thick] (A1) circle (0.3pt);
   \fill[blue,thick] (A2) circle (0.3pt);
\end{scope}
\tdplotsetrotatedcoords{\iAngle}{90}{0}
\begin{scope}[tdplot_rotated_coords]
    \draw[pattern=north west lines, pattern color=blue, opacity=0.5 ] (A1) circle (0.7); 
    \draw[pattern=north west lines, pattern color=green, opacity=0.5 ] (A2) circle (0.7);
    \pgfmathsetmacro{\jAngle}{\RelativeSpeed*\iAngle}
    \draw[-latex,blue] (A1) -- ++({-0.7*cos(\jAngle)},{0.7*sin(\jAngle)},0)node[right]{$y_1'$}; 
    \draw[-latex,blue] (A1) -- ++({0.7*sin(\jAngle)},{0.7*cos(\jAngle)},0)node[right]{$x_1'$};  
    \draw[-latex,green] (A2) -- ++(-0.7,0,0)node[right]{$y_2'$};    
    \draw[-latex,green] (A2) -- ++(0,0.7,0)node[right]{$x_2'$}; 
\end{scope}
\tdplotsetrotatedcoords{\iAngle}{00}{0}
\begin{scope}[tdplot_rotated_coords]
      \draw[thick, dashed, opacity=1]
  (0,0,0.3) -- (0.6,0,0.3);
  \draw[thick, -, opacity=1]
  (0.6,0,0.3) -- (1.2,0,0.3);
\end{scope}
\end{tikzpicture}
}
\end{document}

ACTUALIZAR: Espero haber atendido sus peticiones. En esta versión, el marco azul gira con un 30% de la velocidad de rotación del marco grande. La velocidad relativa se establece mediante el parámetro \RelativeSpeed. Puedes usar el mismo truco para rotar el marco verde o rotarlo con una velocidad diferente. En realidad, escribir el código es bastante sencillo; sin embargo, me cuesta convertir el pdf en un gif animado. (¿Por qué es tan complicado? ¿Por qué lleva tanto tiempo?) Por lo tanto, estaría ansioso por aprender una forma más eficiente de hacerlo.

ingrese la descripción de la imagen aquí

información relacionada