从其他变形路径开始 tikz 路径

从其他变形路径开始 tikz 路径

我正在画两个同心圆,箭头表示收缩。理想情况下,这些箭头都从两个圆的边缘开始,而不是像现在这样从外面或里面开始(见图)。我不知道如何做到这一点,同时像图中所示那样以随机步骤变形路径。

我怎样才能让箭头从变形的圆圈开始?

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}

\begin{document}

\begin{tikzpicture}
   \draw[fill=gray!75,even odd rule,decorate,decoration={random steps,segment length=0.2cm,amplitude=.1cm}] (0,0) circle (1.2)circle (.5) ++(0,-1.2);
   \foreach \n in {0,60,...,300}{
    \draw[-stealth] (0,0)++(\n:0.5)--++(\n:.2);
    \draw[-stealth] (0,0)++(\n:1.2)--++(\n:-.2);
   }
\end{tikzpicture}

\end{document}

答案1

我会将环绘制为两条单独的路径,一条灰色,一条白色,然后可以与库一起使用intersections。为了获得正确闭合的路径,我没有使用装饰random steps来绘制环。

\documentclass[tikz,borde=5]{standalone}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[>=stealth]
\draw [fill=gray!75, name path=A] (0:1.2)
\foreach \i [evaluate={\r=1.2+rand/10;}] in {10, 20,..., 350} { -- (\i:\r)}
  -- cycle;
\draw [fill=white, name path=B] (0:0.5)
  \foreach \i [evaluate={\r=0.5+rand/10;}] in {20, 40,..., 350} { -- (\i:\r)}
  -- cycle;
\foreach \i in {0,45,...,315}{
\path [name path=C](0:0) -- (\i:2);
\draw [->, name intersections={of=A and C}]
 (intersection-1) -- ++(\i+180:1/4);
 \draw [->, name intersections={of=B and C}]
 (intersection-1) -- ++(\i:1/4);
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

一个稍微有点狡猾的方法是让路径有一个固定的半径,箭头从该半径“发射”,而其他地方则是随机的。然后中间的洞就可以成为一个真正的洞了:

\documentclass[tikz,border=5]{standalone}
\begin{document}
\begin{tikzpicture}[>=stealth]
\node [gray!20, scale=2] {Background};
\draw [fill=gray!75, even odd rule] (0:1.2)
\foreach \i [evaluate={\r=mod(\i, 45) ? 1.2+rand/20 : 1.2;}] in {5, 10,..., 355} { -- (\i:\r)}
  -- cycle  (0:0.5)
  \foreach \i [evaluate={\r=mod(\i, 45) ? 0.5+rand/25 : 0.5;}] in {7.5,15,..., 352.5} { -- (\i:\r)}
  -- cycle;
\foreach \i in {0,45,...,315}{
\draw [->] (\i:1.2) -- ++(\i+180:1/4);
\draw [->] (\i:0.5) -- ++(\i:1/4);
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容