\documentclass[tikz]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\begin{tikzpicture}[scale=2]
% draw arcs
\draw[canvas is zx plane at y = 1, line width = 1pt] (2,1) arc (-90:-180:1);
\draw[canvas is zx plane at y = 1, opacity = 0.2, line width = 1pt] (2,1) arc (90:180:1);
\draw[canvas is zy plane at x = 1, opacity = 0.2, line width = 1pt] (2,1) arc (-90:-180:1);
\draw[canvas is zy plane at x = 1, opacity = 0.2, line width = 1pt] (2,1) arc (90:180:1);
%draw the axes
\draw[red,->] (1,1,2) -- (1, 1, -1.1) node[anchor=north west]{$x$};
\draw[blue,->] (1,1,2) -- (3.5,1,2) node[anchor=west]{$z$};
\draw[blue,->] (1,1,2) -- (1,-1.2,2) node[anchor=north]{$y$};
\end{tikzpicture}
\end{document}
你好,
我有以下問題。我希望 xz 平面中的黑色圓弧圍繞繪製的 x 軸旋轉。我只達到了 90° 旋轉步長,但我希望旋轉步長為 5°。誰能幫我解決這個問題嗎?
謝謝,尼科
答案1
我透過將原點放在 來簡化程式碼(0,0,0)
。
可以使用以下方式設定視角:
\tdplotsetmaincoords{70}{110} % rotation about the x and y axis
可使用以下指令設定黑色圓弧旋轉:
\tdplotsetrotatedcoords{0}{0}{-5} % rotation about the x, y and z axis
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{110} % point of view
\tdplotsetrotatedcoords{0}{0}{-5} % black arc rotation (x,y,z)
\begin{tikzpicture}[tdplot_main_coords,scale=1]
%draw the axes
\draw[blue,->] (0,0,0) -- (2,0,0) node[anchor=south]{$x$};
\draw[blue,->] (0,0,0) -- (0,2,0) node[anchor=north]{$y$};
\draw[red,->] (0,0,0) -- (0,0,2) node[anchor=west]{$z$};
% draw arcs
\draw[canvas is yz plane at x = 0, opacity = 0.2, line width = 1pt]
(0,0) arc (0:90:1);
\draw[canvas is yz plane at x = 0, opacity = 0.2, line width = 1pt]
(0,0) arc (0:-90:-1);
\draw[canvas is xz plane at y = 0, opacity = 0.2, line width = 1pt]
(0,0) arc (0:-90:-1);
\draw[tdplot_rotated_coords, canvas is zx plane at y = 0, line width = 1pt]
(0,0) arc (90:0:1);
\end{tikzpicture}
\end{document}
動畫版(僅供娛樂):
代碼:
\documentclass{beamer}
\usepackage{tikz,tikz-3dplot}
\setbeamertemplate{navigation symbols}{}
\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt={#1{}{invisible}}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
},
}
\begin{document}
\tdplotsetmaincoords{70}{110} % point of view
\tdplotsetrotatedcoords{0}{0}{0} % black arc rotation (x,y,z)
\begin{frame}
\centering
\begin{tikzpicture}[tdplot_main_coords]
%draw the axes
\draw[blue,->] (0,0,0) -- (2,0,0) node[anchor=south]{$x$};
\draw[blue,->] (0,0,0) -- (0,2,0) node[anchor=north]{$y$};
\draw[red,->] (0,0,0) -- (0,0,2) node[anchor=west]{$z$};
% draw arcs
\draw[canvas is yz plane at x = 0, opacity = 0.2, line width = 1pt]
(0,0) arc (0:90:1);
\draw[canvas is yz plane at x = 0, opacity = 0.2, line width = 1pt]
(0,0) arc (0:-90:-1);
\draw[canvas is xz plane at y = 0, opacity = 0.2, line width = 1pt]
(0,0) arc (0:-90:-1);
\foreach \i in {0,...,10}
\tdplotsetrotatedcoords{0}{0}{\i*36}
\draw[tdplot_rotated_coords, thick,visible on=<\i>,
canvas is zx plane at y = 0, line width = 1pt]
(0,0) arc (90:0:1);
\end{tikzpicture}
\end{frame}
\end{document}
用於產生動畫 gif 的 ImageMagick 指令:
convert -verbose -delay 12 -loop 0 -density 300 i.pdf o.gif
答案2
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{20} % point of view
\begin{tikzpicture}[tdplot_main_coords,scale=1]
%draw black arc
\draw[canvas is xy plane at z = 0, line width = 1pt]
(0,0) arc (0:-90:-1);
%draw rotated gray arcs (5°-steps)
\foreach \rotStep in {5,10,15,...,355}{
\tdplotsetrotatedcoords{0}{\rotStep}{0}
\draw[tdplot_rotated_coords, canvas is xy plane at z = 0, line width = 1pt, opacity = 0.2]
(0,0) arc (0:-90:-1);
}
%draw the axes
\draw[red,->] (0,0,0) -- (0,4,0) node[anchor=north]{$x$};
\draw[blue,->] (0,0,0) -- (0,0,-2) node[anchor=west]{$y$};
\draw[blue,->] (0,0,0) -- (2,0,0) node[anchor=south]{$z$};
\end{tikzpicture}
\end{document}
在 Sergej 的幫助下,我使用\tdplotsetrotatedcoords{}{}{}
.順便說一句,動畫版本是一個很酷的功能。
感謝您的幫忙!尼可