2

What is the simple way to draw this figure? I am attempting to draw this using tikz. But I cannot easily match the sinusoidal wave with the arrows... I decide to use a Keynote (outcome below), and ask for help on tikz or LaTex?

enter image description here

Thank you!

1 Answer 1

4

With tikz-3dplot you can adjust the view angle.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{0}
\begin{tikzpicture}[scale=2]
\foreach \X in {1,...,6}
 {\begin{scope}[tdplot_main_coords]
\draw[dashed] (\X,0,-1.5) coordinate (b\X) -- (\X,0,0) coordinate (c\X);
 \begin{scope}[canvas is xy plane at z=0]
  \draw (c\X) circle[radius=3mm];
  \path ($(c\X)+(-\X*60+60:0.3)$) coordinate (t\X);
 \end{scope}
\end{scope} 
\draw (c\X|-0,-2.5) circle[radius=3mm];
 \ifodd\X
  \draw[-stealth] (t\X) -- (b\X);
  \draw[-stealth] (c\X|-0,-2.5) -- ++ (-\X*60+60:0.3) coordinate(p\X);
 \else
  \draw[stealth-] (t\X) -- (b\X);
  \draw[stealth-] (c\X|-0,-2.5) -- ++ (-\X*60+60:0.3)  coordinate(p\X);
 \fi
}
\draw plot[smooth,samples at={1,...,6}] (p\x);
\end{tikzpicture}
\end{document}

enter image description here

Or with some pgf keys.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{0}
\begin{tikzpicture}[clock/.cd,distance/.initial=2,radius/.initial=0.7,
angle increment/.initial=50]
\foreach \X in {1,...,6}
 {\begin{scope}[tdplot_main_coords]
\draw[dashed] (\pgfkeysvalueof{/tikz/clock/distance}*\X,0,-1.5) coordinate (b\X)
  -- (\pgfkeysvalueof{/tikz/clock/distance}*\X,0,0) coordinate (c\X);
 \begin{scope}[canvas is xy plane at z=0]
  \draw (c\X) circle[radius=\pgfkeysvalueof{/tikz/clock/radius}];
  \path ($(c\X)+({-(\X-1)*\pgfkeysvalueof{/tikz/clock/angle increment}}:\pgfkeysvalueof{/tikz/clock/radius})$) coordinate (t\X);
 \end{scope}
\end{scope} 
\draw (c\X|-0,-2.5) circle[radius=\pgfkeysvalueof{/tikz/clock/radius}];
 \ifodd\X
  \draw[-stealth] (t\X) -- (b\X);
  \draw[stealth-] (c\X|-0,-2.5) -- ++ ({-(\X-1)*\pgfkeysvalueof{/tikz/clock/angle increment}}:\pgfkeysvalueof{/tikz/clock/radius}) coordinate(p\X);
 \else
  \draw[stealth-] (t\X) -- (b\X);
  \draw[-stealth] (c\X|-0,-2.5) -- ++ ({-(\X-1)*\pgfkeysvalueof{/tikz/clock/angle increment}}:\pgfkeysvalueof{/tikz/clock/radius})  coordinate(p\X);
 \fi
}
\draw plot[smooth,samples at={1,...,6}] (p\x);
\end{tikzpicture}
\end{document}

enter image description here

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .