编辑:

编辑:

我想学习如何创建矩形螺旋,而不必像下面这样对计算进行硬编码。您可以使用循环和/或条件构造使其更优雅吗?

\documentclass[tikz]{standalone}
\def\L{5}
\def\r{.5}
\begin{document}
\begin{tikzpicture}
    \draw[thick] (0,0) --
                ++(\L,0) --
                ++(0,-\L*\r) --
                ++(-\L*\r*\r,0) --
                ++(0,\L*\r*\r*\r) --
                ++(\L*\r*\r*\r*\r,0) --
                ++(0,-\L*\r*\r*\r*\r*\r) --
                ++(-\L*\r*\r*\r*\r*\r*\r,0) --
                ++(0,\L*\r*\r*\r*\r*\r*\r*\r) 
                ;
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑:

您可以选择任意数量的迭代N,我可以稍后更改。

答案1

输出

在此处输入图片描述

代码

\documentclass[tikz]{standalone}
\def\L{5}
\def\r{.9}
\def\N{50}
\begin{document}
\begin{tikzpicture}
    \draw[thick] (0,0) 
    foreach \k in {0,...,\N}
    {
      -- ++ ([rotate=-90*\k,scale=\r^\k]\L,0)
    };
\end{tikzpicture}
\end{document}

答案2

事实证明,OP 想要一个几何螺旋(而且在我回答一个小时后才这么说……)

我认为这一定不难,但这不是这个答案所要讨论的问题。

编辑螺旋向内

输出

在此处输入图片描述

代码

\documentclass[12pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \def\N{9}
  \def\r{.5}

  \coordinate (a) at (10,6) ;
  \draw[thick] (a) {[shift={(\N*\r,-\N*\r)}]
    foreach \k [evaluate=\k as \kk using \N-\k] in {0,1,...,\N} 
      {
        |- + ([,scale=\r] \kk,\kk) 
        |- + ([,scale=\r] -\kk,-\kk) 
      }
      node[draw,blue,very thick,fill=white] {end}
    } ;
  \node [draw,red,very thick,fill=white] (a) at (10,6) {weStartFromHere} ;

\end{tikzpicture}
\end{document}

原本向外螺旋

像这样 ?

  • 蓝色(左)版本用于从 螺旋状延伸(0,0)
  • 红色(右)版本可从任何初始点移植。

输出

在此处输入图片描述

代码

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
  \def\N{9}
  \def\r{.5}
  \draw[blue] (0,0) foreach\k in {1,...,\N} {[scale=\r] |- (\k,-\k) |- (-\k,\k) } ;
  \draw[red] (10,0) foreach\k in {1,...,\N} {|- + ([scale=\r]\k,-\k) |- + ([scale=\r]-\k,\k) } ;
\end{tikzpicture}
\end{document}

相关内容