旋转角度非常大(Tikz)

旋转角度非常大(Tikz)

我目前正在尝试使用 Tikz 绘制斐波那契花。对于较小的 \i 值,一切都运行良好,但如果我将其设置为高于 45,则角度对于旋转来说太大(我考虑的最大值是 6000 左右 :) )。

\documentclass{minimal}
\usepackage{tikz}
\usepackage{calc}
\begin{document}

\begin{center}
\begin{tikzpicture}[scale=0.05]
\foreach \i in {45,...,1}{
\draw[rotate={\i*360*(1-1/(0.5*(1+sqrt(5))))},fill=white] ({(sqrt(\i))},0) ellipse ({(sqrt(\i))} and {0.3*(sqrt(\i))});
}

\end{tikzpicture}
\end{center}
\end{document}

到目前为止,我最好的解决方法是使用 intcalc 包中的 \intcalcMod,但我只能使用整数作为输入,因此错误变得太大。这是我目前能得到的最好的结果(正如您所看到的,螺旋在外部区域消失,我认为这是由于舍入误差造成的,如果我们使用精确的角度,就不会发生这种情况):

在此处输入图片描述

非常感激对这个有趣项目的任何帮助:)

解决了:

感谢 percusse,这是带有 10000 个桨的版本。我数了一下,顺时针螺旋有 144 个,逆时针螺旋有 89 个(所以应该是连续的斐波那契数)。数学真棒 :)

在此处输入图片描述

答案1

如果您可以接受迭代解决方案,那么以下方法可以代替直接乘法。值 283.10562 只是离线完成的,但这并不重要,因为它只是定义了一个初始角度。它也可以从 0 开始迭代,定义一个额外的旋转。

请注意,我在坐标和椭圆规范中使用了尺寸。这是避免缩放问题的更安全的方法。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro\myfact{(1-2/(1+sqrt(5)))*360}
\foreach \i[evaluate={\t=Mod(\lastt-\myfact,360);},
           remember=\t as \lastt (initially 283.10562)] in {1200,...,1}{
\draw[rotate={\t},fill=white] 
      ({(sqrt(\i))*1pt},0) ellipse ({(sqrt(\i))*1pt} and {(sqrt(\i))*0.3pt});
}

\end{tikzpicture}
\end{document}

这是 1200

在此处输入图片描述

和 5000

在此处输入图片描述

相关内容