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