使用 TikZ 再現螺旋影像

使用 TikZ 再現螺旋影像

我試圖在 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從 Paul 那裡得到靈感(和代碼),這裡是一個使用和角度的狹窄螺旋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

相關內容