我的教授用 LaTeX 写了关于 Prim 算法的证明,并用图表说明了如何进行切割等。我很好奇他是如何画出中间圆圈出来的波浪线的。
https://www.uncg.edu/cmp/faculty/srtate/330.f16/primsproof.pdf
有人能解释一下这是怎么做到的吗?我想在论文中重现它。谢谢!
答案1
欢迎!有很多方法可以绘制平滑曲线。您可以使用带有smooth
或 的绘图smooth cycle
,或者使用in
和out
等。
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[bullet/.style={circle,fill,inner sep=1.4pt}]
\draw[semithick] plot[smooth cycle,looseness=1.3] coordinates
{(0,1) (0.5,0.7) (1.2,0.9) (2,1.3) (2.5,1.2) (3.6,1.1) (3.7,2.2)
(3,3.2) (1.6,2.9) (0.3,2.5) };
\draw[semithick]
(1,1.7) node{$W$}
(2.8,2.6) node[bullet,label=above left:$a$](a){}
(a) +(20:1.2) node[bullet,label=above right:$b$](b){}
(2.8,1.5) node[bullet,label=left:$x$](x){}
(x) +(-10:1.2) node[bullet,label=below right:$y$](y){}
(x) to[out=60,in=-60] (3,1.9) to[out=120,in=-120] (a)
-- (b) to[out=-80,in=90] (3.4,1.9)
to[out=-90,in=100] (y) -- (x);
\end{tikzpicture}
\end{document}
要绘制波浪线,只需使用coil
装饰即可。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}[bullet/.style={circle,fill,inner sep=1.4pt,outer sep=0pt}]
\draw[semithick] plot[smooth cycle,looseness=1.3] coordinates
{(0,1) (0.5,0.7) (1.2,0.9) (2,1.3) (2.5,1.2) (3.6,1.1) (3.7,2.2)
(3,3.2) (1.6,2.9) (0.3,2.5) };
\draw[semithick]
(1,1.7) node{$W$}
(2.8,2.6) node[bullet,label=above left:$a$](a){}
(a) +(20:1.2) node[bullet,label=above right:$b$](b){}
(2.8,1.5) node[bullet,label=left:$x$](x){}
(x) +(-10:1.2) node[bullet,label=below right:$y$](y){}
(a)
-- (b) to[out=-80,in=90] (3.4,1.9)
to[out=-90,in=100] (y) -- (x);
\draw[thick,blue,decorate,decoration={coil,aspect=0,segment length=5.9mm}] (x) -- (a);
\end{tikzpicture}
\end{document}
可以找到更漂亮的波浪线这里。