tikz:线段和波浪线的混合

tikz:线段和波浪线的混合

我希望能够使用 TikZ 绘制如下图所示的图片,其中包括:

  • 两条垂直线段
  • 从左边线段顶点到右边线段顶点的波浪线;
  • 从左边线段底点到右边线段底点的波浪线。

此外,我希望能够用一些颜色填充该区域。

在此处输入图片描述

我使用这个代码做到了:

\begin{tikzpicture}
  \filldraw[fill=cyan,domain=0:2,samples=100]
  plot(\x,{(\x)^3-3*(\x)^2+2*\x})
  --plot({2-\x},{(2-\x)/(1+(2-\x)^2)-2})--cycle;
\end{tikzpicture}

让我困扰的是,需要找到两条具体的曲线才能获得波浪线。我认为我应该能够使用类似于rounded corners命令选项的东西来获得它们draw。可能吗?

答案1

我发现使用几个坐标来绘制平滑的绘图比找到控制点更容易。 - 也不需要剪切或调整边界框。

\documentclass[tikz, border=1mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \draw[fill=cyan] plot [smooth, tension=1] coordinates {(0,0) (0.6,0.4) (1.4,-0.4) (2,0)} -- plot [smooth, tension=1] coordinates {(2,-1.5) (0.8,-1.4) (0,-2)} -- cycle;
\end{tikzpicture}
\end{document}

填充区域

答案2

使用贝塞尔曲线来实现:
用贝塞尔曲线填充波浪线

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
    \begin{tikzpicture}
        \clip (0,.5) rectangle (2,-2);
        \draw[fill=cyan] (0,0) .. controls ++(1,1.5) and ++(-1,-1.5).. (2,0) -- (2,-1.5) .. controls ++(-1,.2) and ++(.5,.75) .. (0,-2) --cycle;
    \end{tikzpicture}
\end{document}

编辑:一点解释

你可以查找贝塞尔曲线是什么(TeX-SE 和其他地方有大量示例,当然,你也可以在手册中找到它们),这里有一些解释:
皮埃尔·贝塞尔是一位法国工程师,曾为雷诺汽车工作,并创造了这些参数曲线。
在 TiZ,您可以绘制三次贝塞尔曲线,它允许您使用起点、终点和另外两个点来引导曲线。有一些神奇这里有数学;)但让我们看看它以图形方式给出的内容:

贝塞尔点

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
    \begin{tikzpicture}[lin/.style={red,line width=0.1pt},dot/.style={circle,inner sep=0.5pt,fill=red}]
        \draw[fill=cyan!50]
            (0,0) .. controls ++(1,1.5)
            and ++(-1,-1.5).. (2,0) --

            (2,-1.5) .. controls ++(-1,.2) 
            and ++(.5,.75) .. (0,-2) 

            --cycle;

        \draw[lin] (0,0) --++ (1,1.5) node[dot]{};
        \draw[lin] (2,0) --++ (-1,-1.5) node[dot]{};
        \draw[lin] (2,-1.5) --++ (-1,.2) node[dot]{};
        \draw[lin] (0,-2) --++ (.5,.75) node[dot]{};

    \end{tikzpicture}
\end{document}

在代码中,我添加了您需要了解的(一点)其工作原理。这与​​使用 Illustrator(SVG 文件)等软件时的操作相同。

相关内容