如何使用“控制”与“圆”或“椭圆”等封闭曲线来生成不规则的封闭曲线

如何使用“控制”与“圆”或“椭圆”等封闭曲线来生成不规则的封闭曲线

准备拓扑学的讲稿需要大量的斑点类似(不规则)的闭环图。不幸的是,我不知道经常这样做的简单方法。我碰巧想到了controls在现有库中使用闭曲线(如circleellipse等)的可能性。请告诉我这是否真的可行。我想编写如下代码

\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}

相关内容