我希望能够使用 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 和其他地方有大量示例,当然,你也可以在手册中找到它们),这里有一些解释:
皮埃尔·贝塞尔是一位法国工程师,曾为雷诺汽车工作,并创造了这些参数曲线。
在 Ti钾Z,您可以绘制三次贝塞尔曲线,它允许您使用起点、终点和另外两个点来引导曲线。有一些神奇这里有数学;)但让我们看看它以图形方式给出的内容:
\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 文件)等软件时的操作相同。