Cómo mostrar las direcciones de rotación de un cubo en tikz 3dplot

Cómo mostrar las direcciones de rotación de un cubo en tikz 3dplot

Intento flechas semicirculares con cabezas en ambos extremos. Todos ellos deben tener su centro alrededor de O. Deben marcar las direcciones de rotación del cubo dibujado. Por ejemplo, una flecha semicircular comenzará en S1, tocará S2 y terminará en S3. Entonces en total deberían ser 6 flechas.

Lo intenté durante dos horas y no obtengo la funcionalidad de "arco". Todo lo que consigo esingrese la descripción de la imagen aquí

¿Alguien puede darme una pista o solución sobre cómo llegar a donde quiero?

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{adjustbox}
\usetikzlibrary{calc}

\begin{document}
\trimbox{6.8cm 0cm 0cm 0cm}{
\tdplotsetmaincoords{0}{0}
\tdplotsetrotatedcoords{60}{70}{35}%
\begin{tikzpicture}
    [tdplot_rotated_coords,
        cube/.style={black},
        arr/.style={-latex,color=green!70,thick,line cap=round,shorten <= 1.5pt}]

\coordinate (A1) at (0,0,0);
\coordinate (A2) at (0,1,0);
\coordinate (A3) at (1,1,0);
\coordinate (A4) at (1,0,0);
\coordinate (B1) at (0,0,1);
\coordinate (B2) at (0,1,1);
\coordinate (B3) at (1,1,1);
\coordinate (B4) at (1,0,1);
\coordinate (O) at ($(A1)!0.5!(B3)$);
\coordinate (S1) at ($(A1)!0.5!(B2)$);
\coordinate (S2) at ($(B2)!0.5!(A3)$);
\coordinate (S3) at ($(A3)!0.5!(B4)$);
\coordinate (S4) at ($(B4)!0.5!(A1)$);
\coordinate (S5) at ($(B1)!0.5!(B3)$);
\coordinate (S6) at ($(A1)!0.5!(A3)$);

\draw[cube] (B1) -- (B2) -- (B3) -- (B4) -- cycle;
\draw[cube] (A2) -- (B2);
\draw[cube] (A3) -- (B3);


\begin{scope}[canvas is zy plane at x=0]
\draw[arr] (0:0.5) arc (90:0:-0.5) ;
\draw[arr] (0:0.5) arc (-180:0:-0.5) ;
\end{scope}

\begin{scope}[canvas is zx plane at y=0]
\draw[arr] (0:0.5) arc (180:0:-0.5) ;
\draw[arr] (0:0.5) arc (-180:0:-0.5) ;
\end{scope}

\begin{scope}[canvas is yx plane at z=0]
\draw[arr] (0:0.5) arc (180:0:-0.5) ;
\draw[arr] (0:0.5) arc (-180:0:-0.5) ;
\end{scope}

\draw[cube] (A1) -- (A2) -- (A3) -- (A4) -- cycle;
\draw[cube] (A1) -- (B1);
\draw[cube] (A4) -- (B4);

\end{tikzpicture}}

\end{document}

Respuesta1

Su código original en realidad es muy cercano a lo que solicita, si sigue el consejo de John Kormylo y usa (O) +... para sus coordenadas iniciales y fija el primer arco para que comience en 180 grados en lugar de 90.

Desafortunadamente, el diagrama resultante está bastante desordenado y es muy difícil (en mi opinión) interpretar los arcos correctamente en 3D. Una cosa que podría ayudar es utilizar líneas duplicadas para reforzar la idea de que algunas de sus líneas están "frente" a otras. También agregué la bendingbiblioteca, lo que hace que las puntas de flecha parezcan un poco menos incómodas, y las coloqué a lo largo de sus respectivos círculos para que no apunten todas al mismo lugar.

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{adjustbox}
\usetikzlibrary{calc, arrows.meta}
\usetikzlibrary{bending}

\begin{document}
\trimbox{6.8cm 0cm 0cm 0cm}{
\tdplotsetmaincoords{0}{0}
\tdplotsetrotatedcoords{60}{70}{35}%
\begin{tikzpicture}[
      tdplot_rotated_coords,
      cube/.style={white, double=black, double distance=.1mm, join=bevel},
      arr/.style={-{latex[color=green!70]},
        white, double=green!70, shorten <= 1pt, shorten >=1pt
      }
    ]

\coordinate (A1) at (0,0,0);
\coordinate (A2) at (0,1,0);
\coordinate (A3) at (1,1,0);
\coordinate (A4) at (1,0,0);
\coordinate (B1) at (0,0,1);
\coordinate (B2) at (0,1,1);
\coordinate (B3) at (1,1,1);
\coordinate (B4) at (1,0,1);
\coordinate (O) at ($(A1)!0.5!(B3)$);
\draw[cube] (B1) -- (B2) -- (B3) -- (B4) -- cycle
  (A2) -- (B2)
  (A3) -- (B3);

% These must be drawn back to front
\draw[arr, canvas is zx plane at y=0] (O) +(0:0.5) arc (0:-180:0.5);
\draw[arr, canvas is yz plane at x=0] (O) +(0:0.5) arc (0:180:0.5);
\draw[arr, canvas is xy plane at z=0] (O) +(180:0.5) arc (180:0:0.5);
\draw[arr, canvas is xy plane at z=0] (O) +(180:0.5) arc (-180:0:0.5);
\draw[arr, canvas is yz plane at x=0] (O) +(0:0.5) arc (0:-180:0.5);
\draw[arr, canvas is zx plane at y=0] (O) +(0:0.5) arc (0:180:0.5);

\draw[cube] (A1) -- (A2) -- (A3) -- (A4) -- cycle
  (A1) -- (B1)
  (A4) -- (B4);

\end{tikzpicture}
}

\end{document}

cubo giratorio

Respuesta2

Lo redefiní arrcomo una flecha de dos puntas y agregué un punto en (O).

\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{adjustbox}
\usetikzlibrary{calc}

\begin{document}
\trimbox{6.8cm 0cm 0cm 0cm}{
\tdplotsetmaincoords{0}{0}
\tdplotsetrotatedcoords{60}{70}{35}%
\begin{tikzpicture}
    [tdplot_rotated_coords,
        cube/.style={black},
        arr/.style={latex-latex,color=green!70,thick}]

\coordinate (A1) at (0,0,0);
\coordinate (A2) at (0,1,0);
\coordinate (A3) at (1,1,0);
\coordinate (A4) at (1,0,0);
\coordinate (B1) at (0,0,1);
\coordinate (B2) at (0,1,1);
\coordinate (B3) at (1,1,1);
\coordinate (B4) at (1,0,1);
\coordinate (O) at ($(A1)!0.5!(B3)$);
\coordinate (S1) at ($(A1)!0.5!(B2)$);
\coordinate (S2) at ($(B2)!0.5!(A3)$);
\coordinate (S3) at ($(A3)!0.5!(B4)$);
\coordinate (S4) at ($(B4)!0.5!(A1)$);
\coordinate (S5) at ($(B1)!0.5!(B3)$);
\coordinate (S6) at ($(A1)!0.5!(A3)$);

\draw[cube] (B1) -- (B2) -- (B3) -- (B4) -- cycle;
\draw[cube] (A2) -- (B2);
\draw[cube] (A3) -- (B3);

\fill (O) circle[radius=1pt];

\begin{scope}[canvas is zy plane at x=0]
\draw[arr] (O) +(90:0.5) arc (90:-90:0.5) ;
\end{scope}

\begin{scope}[canvas is zx plane at y=0]
\draw[arr] (O) +(90:0.5) arc (90:-90:0.5) ;
\end{scope}

\begin{scope}[canvas is yx plane at z=0]
\draw[arr] (O) +(90:0.5) arc (90:-90:0.5) ;
\end{scope}

\draw[cube] (A1) -- (A2) -- (A3) -- (A4) -- cycle;
\draw[cube] (A1) -- (B1);
\draw[cube] (A4) -- (B4);

\end{tikzpicture}}

\end{document}

manifestación

información relacionada