tikz pgf

TikZ를 사용하여 x축으로 향하는 3d 실린더를 그리는 방법

x축 방향으로 실린더를 그리는 방법은 무엇입니까?

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

앞으로는 아래 그림과 같이 될 것입니다. 그러나 지금은 3d에서 원하는 축을 따라 투명한 실린더를 그리는 데 문제가 있습니다.

다음은 해당 실린더의 시작입니다. 전경에 있는 것은 마지막에 그려야 합니다.

원의 접선 점에 대한 각도 125 가 추측됩니다.주어진 좌표계 벡터 x , yz 에서 이를 계산하는 방법이 있다고 확신 합니다.

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) 노드[아래] {$x$};
\draw[->] (0,0,0) -- (0,2,0) 노드[왼쪽 아래] {$y$};
\draw[->] (0,0,0) -- (0,0,2) 노드[위] {$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) 호[끝 각도=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




3dtools 를 사용 하여 원통을 만들 수 있습니다.

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