如何绘制任意接近单位圆的螺旋?

如何绘制任意接近单位圆的螺旋?

我想画这样的东西:

在此处输入图片描述

中心的圆圈是不是连接到螺旋,但螺旋在接近圆时会变得任意。

我无法画出这个图的原因是我不知道如何从数学上/形式上描述它。

我发现了这个:

\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \draw [domain=0:30,variable=\t,smooth,samples=100]
        plot ({\t r}: {0.005*\t*\t});
\end{tikzpicture}
\end{document}

但似乎并没有接近中心固定大小的圆圈。

这个图片看起来与我想要的相似,但我只需要一个螺旋。

我的问题背景

我目前正在学习几何和拓扑学。遗憾的是教授没有提供脚本,所以我自己写了一个脚本,以便其他学生更容易学习(参见存储库带有源文件和编译好的pdf。当你使用$\varepsilon$环境的定义时,螺旋和圆所描述的空间是连通的,但当你使用要求存在路径的定义时,它不是连通的。

答案1

您需要一个半径趋近于 1 的函数。例如,您可以使用1+2*exp(-0.1*\t)

\documentclass[border=5pt]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \draw [red] (0,0) circle [radius=1];
    \draw [domain=0:50,variable=\t,smooth,samples=500]
        plot ({\t r}: {1+2*exp(-0.1*\t)});
\end{tikzpicture}
\end{document}

答案2

我的螺旋从正确的点开始,不是吗?

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\begin{document}
\begin{pspicture}(-5,-5)(5,5)
    \psplot[algebraic,polarplot,plotpoints=2000]{0}{TwoPi 8 mul}{1+4*3^(-0.1*x)}
\end{pspicture}
\end{document}

在此处输入图片描述

动画版

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\begin{document}
\multido{\n=0.0+0.2}{41}{
\begin{pspicture}(-5,-5)(5,5)
    \psplot[algebraic,polarplot,plotpoints=2000]{0}{TwoPi \n\space mul}{1+4*3^(-0.1*x)}
\end{pspicture}}
\end{document}

在此处输入图片描述

带有衰减正弦乘法器。

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}

\begin{document}
\multido{\n=0.0+0.2}{41}{%
\begin{pspicture}(-5,-5)(5,5)
    \pscircle[linecolor=red,dimen=m]{1}
    \psplot[algebraic,polarplot,plotpoints=2000]{0}{TwoPi \n\space mul}{1+4*(1-sin(3*Pi*x)/8*2^(-x/10))*3^(-x/10)}
\end{pspicture}}
\end{document}

在此处输入图片描述

最后一次编辑(我保证)。以下内容在 TikZ 中可能比较困难。

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}
\psset{unit=8}
\begin{document}
\multido{\n=-6.0+.2}{61}{%
\begin{pspicture}(-.5,-.5)(1.5,1.5)
\psplotDiffEqn[whichabs=0,whichord=1,linecolor=red,method=rk4,algebraic,plotpoints=1000]{-6}{\n}{0 0}{cos(Pi*x^2/2)|sin(Pi*x^2/2)}
\end{pspicture}}
\end{document}

在此处输入图片描述

答案3

出于健康原因,这没有动画效果......但它允许通过另一种方法更容易地构建更密集的螺旋(但它本质上并没有不同并且属于同一个“指数”螺旋家族)。

完成的转弯次数故意安排得有点多。

\documentclass[border=2pt,tikz]{standalone}
%\usepackage{tikz}
\usepackage{xintfrac}

% \ratio will get defined inside each tikzpicture

% The floating point macros of xintfrac are used, not the exact ones as we don't
% need the *exact* values with all digits!
\xintDigits := 4;
\def\Rescale #1#2{\xintTrunc {3}
                      {\xintFloatMul {\xintFloatPow {\ratio}{#1}}{#2}}}
% \Rescale multiplies its second argument #2 by \ratio to the power #1

\newcount\cnta

\begin{document}
\begin{tikzpicture}
   \cnta 0
   \def\ratio     {0.9}
   \def\quarters  {120}
   \def\couleur   {red}
   \loop
   \def\Quarter {(1+\Rescale{\cnta}{2},0) arc 
                     (0:90:1+\Rescale{\cnta}{2} and 1+\Rescale{\cnta+1}{2})}

   \draw [color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter; 

   \advance\cnta 1
   \draw [rotate=90,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \draw [rotate=180,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \draw [rotate=270,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \ifnum \cnta < \quarters 
   \repeat
   \draw [thick,color=\couleur] (0,0) circle (1);
\end{tikzpicture}

\begin{tikzpicture}
   \cnta 0
   \def\ratio     {0.95}
   \def\quarters  {180}
   \def\couleur   {blue}
   \loop
   \def\Quarter {(1+\Rescale{\cnta}{2},0) arc 
                     (0:90:1+\Rescale{\cnta}{2} and 1+\Rescale{\cnta+1}{2})}

   \draw [color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter; 

   \advance\cnta 1
   \draw [rotate=90,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \draw [rotate=180,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \draw [rotate=270,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \ifnum \cnta < \quarters 
   \repeat
   \draw [thick,color=\couleur] (0,0) circle (1);
\end{tikzpicture}

\begin{tikzpicture}
   \cnta 0
   \def\ratio     {0.97}
   \def\quarters  {240}
   \def\couleur   {green}
   \loop
   \def\Quarter {(1+\Rescale{\cnta}{2},0) arc 
                     (0:90:1+\Rescale{\cnta}{2} and 1+\Rescale{\cnta+1}{2})}

   \draw [color=\couleur!\the\numexpr 100-100*\cnta/\quarters\relax]  
                    \Quarter; 

   \advance\cnta 1
   \draw [rotate=90,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax]  
                    \Quarter;

   \advance\cnta 1
   \draw [rotate=180,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax]
                    \Quarter;

   \advance\cnta 1
   \draw [rotate=270,
          color=\couleur!\the\numexpr 100-100*\the\cnta/\quarters\relax] 
                    \Quarter;

   \advance\cnta 1
   \ifnum \cnta < \quarters 
   \repeat
   \draw [thick,color=\couleur] (0,0) circle (1);
\end{tikzpicture}

\end{document}

螺旋-1 螺旋-2 螺旋-3

相关内容