更新答案

更新答案

如何找到连接或通过圆心的平滑曲线并绘制与它平行且有一定偏移的箭头?

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

\begin{document}
    \begin{tikzpicture}
     \foreach[count=\i] \x in {0,1,...,6}{%
        \pgfmathsetmacro\ml{1.2^(\i-1)}
        \draw (1,1)++(\x*30:5*\ml) circle[radius=1];
    }
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

更新答案

在确定爱好路径为所需路径并对“偏移”进行一些澄清之后,这里是基于此的修改答案。

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{hobby,arrows.meta}
\begin{document}
\begin{tikzpicture}
  \foreach [evaluate=\i as \ml using {1.2^\x}] \x in {0,1,...,6}{%
    \draw (1,1) ++(\x*30:5*\ml) circle [radius=1] ++(\x*30:1.5) coordinate (c\x) ++(\x*30:-3) coordinate (d\x);
  }
  \draw [-Latex, ultra thick, blue] [use Hobby shortcut] (c0) .. (c1) .. (c2) .. (c3) .. (c4) .. (c5) .. (c6);
  \draw [Latex-, ultra thick, magenta] [use Hobby shortcut] (d0) .. (d1) .. (d2) .. (d3) .. (d4) .. (d5) .. (d6);
\end{tikzpicture}
\end{document}

内在和外在

原始答案

穿过圆心的路径有无数条。因此,你所说的“那条”路径到底是哪条完全不清楚。

此外,偏移的类型也很重要。在这里,我假设路径应该相对于(1,1)相关圆心的方向偏移一个恒定的距离。这意味着这些点从中心“向外推” (1,1)

无限多条路径太多了,无法在此网站上给出答案。我画了三条,每条都带有一个箭头。其他的留给您作为练习,亲爱的读者。

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{hobby}
\begin{document}
\begin{tikzpicture}
  \foreach [evaluate=\i as \ml using {1.2^\x}] \x in {0,1,...,6}{%
    \draw (1,1) ++(\x*30:5*\ml) circle [radius=1] ++(\x*30:1.5) coordinate (c\x);
  }
  \draw [->] [green] (c0) \foreach \i in {1,...,6} { -- (c\i) };
  \draw [->] [blue] [use Hobby shortcut] (c0) .. (c1) .. (c2) .. (c3) .. (c4) .. (c5) .. (c6);
  \draw [->] [magenta] \foreach  \i [remember=\i as \ilast (initially 0)] in {1,...,6} { (c\ilast) [out=-120,in=60]to (c\i) };
\end{tikzpicture}
\end{document}

无限多条可能路径中的三条

答案2

像这样?

在此处输入图片描述

\documentclass[tikz, border=3mm]{standalone}

\begin{document}
\begin{tikzpicture}
\foreach \x [count=\i, remember=\x as \rx (initially 01)] in {0,1,...,6}
{%
\pgfmathsetmacro\ml{1.2^(\i-1)}
\pgfmathsetmacro\mr{1.2^(\i-2)}
\ifnum\i>1
\draw[thick, red] (\rx*30:5*\mr) -- (\x*30:5*\ml);
\fi
\draw (\x*30:5*\ml) circle[radius=1];
}
\end{tikzpicture}
\end{document}

或者

\documentclass[tikz, border=3mm]{standalone}

\begin{document}
\begin{tikzpicture}
\foreach \x [count=\i,
              remember=\x as \rx (initially 0),
              evaluate=\i as \ml using 1.2^(\i-1),
              evaluate=\i as \mr using 1.2^(\i-2)] in {0,1,...,6}
{
\ifnum\i>1
\draw[blue] (\rx*30:5*\mr) -- (\x*30:5*\ml);
\fi
\draw[thick, red] (\x*30:5*\ml) circle[radius=1];
}
\end{tikzpicture}
\end{document}

相关内容