So zeigen Sie die Drehrichtung eines Würfels in Tikz 3dplot an

So zeigen Sie die Drehrichtung eines Würfels in Tikz 3dplot an

Ich versuche, halbkreisförmige Pfeile mit Spitzen an beiden Enden zu zeichnen. Alle sollten ihren Mittelpunkt um O haben. Sie sollten die Drehrichtungen des gezeichneten Würfels markieren. Beispielsweise beginnt ein halbkreisförmiger Pfeil bei S1, berührt S2 und endet bei S3. Insgesamt sollten es also 6 Pfeile sein.

Ich habe jetzt zwei Stunden herumprobiert und bekomme die Funktionalität von "arc" einfach nicht hin. Alles was ich bekomme istBildbeschreibung hier eingeben

Kann mir jemand einen Hinweis oder eine Lösung geben, wie ich dorthin komme, wo ich hin möchte?

\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}

Antwort1

Ihr ursprünglicher Code kommt Ihrer Anfrage tatsächlich sehr nahe, wenn Sie den Rat von John Kormylo befolgen und (O) +... als Startkoordinaten verwenden und den ersten Bogen so festlegen, dass er bei 180 Grad statt bei 90 Grad beginnt.

Leider ist das resultierende Diagramm ziemlich überladen und es ist (meiner Meinung nach) sehr schwierig, die Bögen in 3D richtig zu interpretieren. Eine Möglichkeit, die helfen könnte, ist die Verwendung doppelter Linien, um den Eindruck zu verstärken, dass einige Ihrer Linien „vor“ anderen liegen. Ich habe auch die bendingBibliothek hinzugefügt, die die Pfeilspitzen etwas weniger seltsam aussehen lässt, und die Pfeilspitzen entlang ihrer jeweiligen Kreise platziert, damit sie nicht alle auf die gleiche Stelle zeigen.

\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}

rotierender Würfel

Antwort2

Ich habe es arrals zweiköpfigen Pfeil neu definiert und bei einen Punkt hinzugefügt (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}

Demo

verwandte Informationen