如何用TikZ绘制任意封闭曲面?

如何用TikZ绘制任意封闭曲面?

我想绘制如下图所示的任意闭合曲面。我该怎么做? 在此处输入图片描述

以下是 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

当您尝试shadefill一条路径时,TikZ 确实会将其关闭,但关闭它的最后一段是一条直线。

如果您想要一条“圆润”的封闭路径,那么您必须使路径的结束点与开始点相同,并控制曲率以使其在该点“平滑”。

使用控制点来做到这一点很困难。我会使用爱好包,它提供了类似 metapost 的语法来指定平滑的曲线路径(开放和封闭),如果您想控制最终形状,它是非常值得推荐的。

如果您不需要太多控制,而任何“圆形”就足够了,您可以使用构造to [in=alpha, out=beta]来分别指定曲线路径离开起点和进入终点的角度alphabeta。如果您使用相同的构造来连接每对点,并确保曲线离开点的角度与进入点的角度相同(+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}

例子

相关内容