tikz pgf

Wie man mit TikZ einen in der X-Achse gerichteten 3D-Zylinder zeichnet

Wie zeichnet man einen in der X-Achse gerichteten Zylinder?

\documentclass[tikz]{standalone}
\usetikzlibrary{3d}

\begin{document}

\begin{tikzpicture}[x={(1cm,0.4cm)}, y={(8mm, -3mm)}, z={(0cm,1cm)}, line cap=round, line join=round]

%   % Main Axes
    \draw[->] (0,0,0) -- (2,0,0) node[below] {$x$};
    \draw[->] (0,0,0) -- (0,2,0) node[below left] {$y$};
    \draw[->] (0,0,0) -- (0,0,2) node[above] {$z$};

    % Big Axis
    \draw[line cap=round, -latex, very thick] (-0.5,0,0) -- (10,0,0);

    \begin{scope}[canvas is yz plane at x=5.5]
    \draw[] (0,0)  circle (1);
    \end{scope}
    
    \begin{scope}[canvas is yz plane at x=8.5]
    \draw[] (0,0)  circle (1);
    \end{scope}

\end{tikzpicture}

In Zukunft soll es so aussehen wie im Bild unten.Aber im Moment habe ich ein Problem mit dem Zeichnen eines transparenten Zylinders entlang der gewünschten Achse in 3d.


Hier ist ein Anfang für diesen Zylinder:Was im Vordergrund ist,muss zuletzt gezeichnet werden.

Der Winkel 125 für den Punkt dieser Tangente an den Kreisen wird geschätzt. Ich bin sicher, dass es eine Möglichkeit gibt, das aus den gegebenen Koordinatensystemvektoren x , y und z zu berechnen .

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{3d}
\begin{document}
\begin{tikzpicture}[
  x={(1cm,0.4cm)},
  y={(8mm, -3mm)},
  z={(0cm,1cm)},
  line cap=round,
  line join=round,
  radius=1,
  delta angle=-180,
  front/.style={canvas is yz plane at x=5.5},
  back/.style={canvas is yz plane at x=8.5},
]

% Main Axes
\draw[->] (0,0,0) -- (2,0,0) Knoten [unten] {$x$};
\draw[->] (0,0,0) -- (0,2,0) node[unten links] {$y$};
\draw[->] (0,0,0) -- (0,0,2) Knoten[oben] {$z$};

% back gray arc
\draw[back, gray] (125:1) arc[start angle=125, delta angle=180];
% bix axis (through and behind cylinder)
\draw[line cap=round, -latex, very thick] {
  [front] (0,0)} -- (10,0,0);

% cylinder
\draw[fill=pink,fill opacity=.5] {
    [back]
      (125:1) arc[start angle=125]
  }{
    [front]
      -- (125+180:1) Bogen[Endwinkel=125]
  } --cycle;
% front arc
\draw[front]      (125:1) arc[start angle=125];
% foreground axis
\draw[very thick, line cap=rect] (-0.5,0,0) -- (5.5,0,0);
\end{tikzpicture}
\end{document}

Output




Sie können 3dtools verwenden , um Zylinder zu erstellen.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc,3dtools}% https://github.com/marmotghost/tikz-3dtools
\begin{document}
\begin{tikzpicture}[3d/install view={phi=130,theta=70,psi=0},declare function={r=2;h=8;}] 
    \path[3d/record physical components] 
    (1,0,0) coordinate (ez') 
    (0,1,0) coordinate (ex') 
    (0,0,1) coordinate (ey');
    \begin{scope}[x={(ex')},y={(ey')},z={(ez')}]
        \pic{3d/frustum={r=r,R=r,h=h}};
    \end{scope}
    \draw[3d/hidden] (0,0,-r) -- (0,0,r) (0,0,0) -- (h,0,0) ;
    \draw[3d/hidden] (0,0,0) -- (0,r,0);
    \node[above left] (O) at  (0,0,0) {$ O $};
    \fill  (0,0,0) circle[radius = 1.5pt];
    \draw[3d/visible, - latex] (h,0,0) -- (h+ 3,0,0) node[above]{$x$};
    \draw[3d/visible, - latex] (0,0,r) -- (0,0,r+1) node[above]{$z$};
    \draw[3d/visible, - latex] (0,r,0) -- (0,r+1,0) node[above]{$y$};    
\end{tikzpicture}   
\end{document}