在 tikz 中绘制疯狂箭头

在 tikz 中绘制疯狂箭头

我试图展示 tikz 图片中两个节点之间的依赖关系并不平滑。我想我会添加一个像下面这样的疯狂箭头: 疯狂箭

当然,我的画不是最好的,但你明白我的意思。我希望箭头有改变振幅和频率表明从节点 A 到节点 B 的路径非常粗糙。有没有办法使用 tikz 来实现这一点?(或者更好的疯狂箭头,更对称和周期性?)

答案1

这是另一种选择,使用sincos操作:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw[ultra thick,cyan,->,>=latex] 
  (-2,0) -- 
  (0,0) sin (0.5,3) cos (1,0) sin (1.5,-3) cos (2,0) 
  sin (2.5,2) cos (3,0) sin (3.5,-2) cos (4,0)
  sin (4.5,4) cos (5,0) sin (5.5,-4) cos (6,0)
  sin (6.25,1.5) cos (6.5,0) sin (6.75,-1.5) cos (7,0)
  -- ++(1.5,0);
\end{tikzpicture}

\end{document}

在此处输入图片描述

同一主题的变体,但使用plot

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}

\begin{document}

\begin{tikzpicture}
\begin{scope}[cyan,ultra thick]
\draw
  (-1,0) -- (0,0);
\draw[domain=0:2*pi,x=10pt] 
  (0,0) plot (\x,{sin(\x r)}) coordinate (end1);
\draw[shift={(end1)},domain=0:2*pi,x=10pt,smooth] 
  (end1) plot (\x,{2*sin(\x r)}) coordinate (end2);
\draw[shift={(end2)},domain=0:2*pi,x=10pt,smooth] 
  (end2) plot (\x,{5*sin(\x r)}) coordinate (end3);
\draw[shift={(end3)},domain=0:2*pi,x=3pt,smooth] 
  (end3) plot (\x,{0.5*sin(2*\x r)}) coordinate (end4);
\draw[->,>=latex] (end4) -- ++(1,0);  
\end{scope}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

TikZ 有一个名为 的路径修饰random steps。通过调整段长度和振幅值,您应该能够获得足够疯狂的路径。对于周期性(且不那么疯狂)的路径,您可以使用修饰snake,它具有类似的可调整参数。请参阅 TikZ 文档中的第 24 节。

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}

\begin{document}
\begin{tikzpicture}
\draw[-stealth,decorate,decoration={random steps,segment length=3pt,amplitude=4pt,pre length=2pt,post length=3pt}] (0,0) -- (2,0);
\draw[-stealth,decorate,decoration={snake,amplitude=3pt,pre length=2pt,post length=3pt}] (0,-0.5) -- ++(2,0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容