准备拓扑学的讲稿需要大量的斑点类似(不规则)的闭环图。不幸的是,我不知道经常这样做的简单方法。我碰巧想到了controls
在现有库中使用闭曲线(如circle
、ellipse
等)的可能性。请告诉我这是否真的可行。我想编写如下代码
\draw (0,0) .. controls (-1,0) and (1,0) .. circle (2);
产生一条曲线,看起来像
编辑:
在 TeX.SE 中浏览时,我发现这个答案。但这带来了另一个问题,无法tikzfillbetween
按预期工作。请参阅以下 MWE:
\documentclass{standalone}
\usepackage{pgfplots}
\usetikzlibrary{hobby, pgfplots.fillbetween}
\begin{document}
\begin{tikzpicture}[use Hobby shortcut,closed=true]
\draw [name path=A] (-3.5,0.5) .. (-3,2.5) .. (-1,3.5).. (1.5,3).. (4,3.5).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-3,-2).. (-3.5,0.5);
\draw [name path=B] (0,0) circle (1);
\tikzfillbetween [of=A and B] {blue, opacity=0.2};
\end{tikzpicture}
\end{document}
答案1
好的,因此,我没有编辑我之前的答案(当问题非常不清楚时,这是为了给出even odd rule
关于闭合曲线的提示),而是添加了一个新的答案,如果这不是 OP 想要的,我会删除它。hobby
因此基本上,您似乎要求的是一种填充形状的剪切部分的方法,如下所示:
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\def\A{(0,0) (1,1) (3,0) (2,-1)}
\def\B{(0,0) circle (1)}
\begin{scope}
\clip\B;
\fill[pattern=north west lines, pattern color=orange] plot[smooth cycle] coordinates {\A};
\end{scope}
\draw[violet]\B;
\draw[red] plot[smooth cycle] coordinates {\A};
\end{tikzpicture}
\end{document}
既然您说形状不相关,我只是制作了一个简短的代码,现在您可以自定义它。
答案2
smooth cycle
像这样使用试错点怎么样?
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw plot[smooth cycle] coordinates{
(-1.8,-.2) (-1.6,.5) (-1,.9)
(-.3,1) (1,.7) (2,.2) (2.22,0)
(2.42,-.45) (2.25,-1)
(1.8,-1.18) (1.2,-1)
(0,-.8)
(-.9,-.9) (-1.5,-.7)
};
\draw
(-1.55,.3) circle(.7) +(190:1) node{$W_1$}
(-.18,-.68) circle(.7) +(-45:1) node{$W_2$};
\path[nodes={fill,circle,inner sep=0,outer sep=1pt,minimum size=3pt}]
(-1.95,.55) node (x1) {}
(-1.2,.5) node (x2) {}
(-.3,-.4) node (x3) {}
;
\draw[stealth-] (x1) to[out=85,in=-60] ++(100:.6) node[above]{$x$};
\draw[stealth-] (x2) to[out=85,in=-60] ++(100:.6) node[above]{$x$};
\path (2.1,.4) node{$U$}
(x3)+(0:.2) node{$y$};
\end{tikzpicture}
\end{document}
有了hobby
库,曲线更平滑!
\usetikzlibrary{hobby}
\draw[red,use Hobby shortcut,closed=true]
(-1.8,-.2) .. (-1.6,.5) .. (-1,.9) ..
(-.3,1) .. (1,.7) .. (2,.2) .. (2.22,0) ..
(2.42,-.45) .. (2.25,-1) ..
(1.8,-1.18) .. (1.2,-1) ..
(0,-.8) ..
(-.9,-.9) .. (-1.5,-.7)
;
答案3
这是您要找的东西吗?
\documentclass[tikz]{standalone}
\usetikzlibrary{hobby}
\begin{document}
\begin{tikzpicture}[use Hobby shortcut,closed=true]
\fill[even odd rule,cyan] (-3.5,0.5) .. (-3,2.5) .. (-1,3.5).. (1.5,3).. (4,3.5).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-3,-2).. (-3.5,0.5)
(0,0) circle (1);
\end{tikzpicture}
\end{document}