我正在尝试在 TikZ 中重现下图中的螺旋形状,我对原子和文本不感兴趣,只对螺旋感兴趣。我希望螺旋像图片中一样呈绿色。
我正在考虑以某种方式将几条正弦曲线放在一起,但这似乎是一种非常低效的方法,而且我不知道如何使用该方法为形状着色。
答案1
这是一个可能的解决方案:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\colorlet{color 2}{lime!50!gray}
\colorlet{color 1}{white}
\foreach \dx in {0,2,4}{
\begin{scope}[xshift=\dx cm]
\draw[draw=gray,top color=color 2,bottom color=color 1]
(0,0) -- ++(1,0) cos ++(.5,1) sin ++(.5,1) -- ++(-1,0) cos ++(-.5,-1) sin ++(-.5,-1) -- cycle;
\end{scope}
}
\foreach \dx in {0,2,4}{
\begin{scope}[xshift=1cm + \dx cm]
\draw[draw=gray,top color=color 1,bottom color=color 2]
(0,2) -- ++(1,0) cos ++(.5,-1) sin ++(.5,-1) -- ++(-1,0) cos ++(-.5,1) sin ++(-.5,1) -- cycle;
\end{scope}
}
\end{tikzpicture}
\end{document}
答案2
in
受到保罗的启发(和代码),这里使用和角度绘制了一个狭窄的螺旋out
,只是为了展示另一种方式:
\documentclass[tikz,border=5]{standalone}
\begin{document}
\begin{tikzpicture}[x=3cm,y=0.8cm]
\colorlet{color 2}{lime!50!gray}
\colorlet{color 1}{white}
\foreach \dx in {0,6,12}{
\begin{scope}[xshift=\dx cm]
\draw[draw=gray,top color=color 2,bottom color=color 1]
(0,0) -- ++(1,0) to[out=0,in=180] ++(1,3) -- ++(-1,0) to[out=180,in=0] ++(-1,-3) -- cycle;
\end{scope}
}
\foreach \dx in {0,6,12}{
\begin{scope}[xshift=3cm + \dx cm]
\draw[draw=gray,top color=color 1,bottom color=color 2]
(0,3) -- ++(1,0) to[out=0,in=180] ++(1,-3) -- ++(-1,0) to[out=180,in=0] ++(-1,3) -- cycle;
\end{scope}
}
\end{tikzpicture}
\end{document}
答案3
这是 Paul Gaborit 的代码,用三倍重写foreach
使其更短;)。
\begin{tikzpicture}
\colorlet{color 1}{lime!50!gray}
\colorlet{color -1}{white}
\foreach \s [evaluate=\s as \w using int(-\s)] in {1,-1} {
\foreach \t in {0,1,2} {
\draw[draw=gray,top color=color \s,bottom color=color \w, xshift=2*\t cm, xscale=\s]
(-1.5,-1) \foreach \i in {1,-1} {cos ++(\i/2,\i) sin ++(\i/2,\i) -- ++(\i,0)};
}
}
\end{tikzpicture}
笔记:我按照 Ignasi 的建议进行了更新,通过引入第三个来使用(-1.5,-1) cos ++(.5,1) sin ++(.5,1) -- ++(1,0)
和之间的中心对称性。cos ++(-.5,-1) sin ++(-.5,-1) -- cycle
\foreach