![如何用TikZ绘制任意封闭曲面?](https://linux22.com/image/271664/%E5%A6%82%E4%BD%95%E7%94%A8TikZ%E7%BB%98%E5%88%B6%E4%BB%BB%E6%84%8F%E5%B0%81%E9%97%AD%E6%9B%B2%E9%9D%A2%EF%BC%9F.png)
我想绘制如下图所示的任意闭合曲面。我该怎么做?
以下是 MWE:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\shade[line width=2pt, color=blue] (0, 0) .. controls(1,2) .. (3, 0) ;
\end{tikzpicture}
\end{document}
在我的代码中,颜色选项不起作用,并且我无法关闭 \controls。
答案1
当您尝试shade
或fill
一条路径时,TikZ 确实会将其关闭,但关闭它的最后一段是一条直线。
如果您想要一条“圆润”的封闭路径,那么您必须使路径的结束点与开始点相同,并控制曲率以使其在该点“平滑”。
使用控制点来做到这一点很困难。我会使用爱好包,它提供了类似 metapost 的语法来指定平滑的曲线路径(开放和封闭),如果您想控制最终形状,它是非常值得推荐的。
如果您不需要太多控制,而任何“圆形”就足够了,您可以使用构造to [in=alpha, out=beta]
来分别指定曲线路径离开起点和进入终点的角度alpha
和beta
。如果您使用相同的构造来连接每对点,并确保曲线离开点的角度与进入点的角度相同(+180),那么您也会在这些点处获得平滑的曲线。
例如:
\begin{tikzpicture}
\shade[line width=2pt, top color=blue]
(0, 0) to [out=20, in=70] (3,0)
to [out=250, in=200] (0,0) ;
\fill[red] (0,0) circle(2pt) (3,0) circle(2pt); % Show points
\end{tikzpicture}