使用 TiKz 绘制二次曲面

使用 TiKz 绘制二次曲面

TiKz/PGF 中是否有任何内置功能可以绘制二次曲面,即由方程给出的曲面

Ax^2 + By^2 + Cz^2 + Dz = E?

我知道原始 gnuplot 命令可以执行几乎所有 gnuplot 命令(至少据我所知)。

我尝试使用以下命令:

\begin{tikzpicture}  
\draw[thick] plot[raw gnuplot] function{set urange [0:2*pi]; set vrange [0:pi]; set parametric; set isosample 40; splot cos(u)*sin(v)/3, sin(u)*sin(v), cos(v)};  
\end{tikzpicture}

但结果并不令人满意。

答案1

您可能对 PGFplots 感兴趣(参见:pgfplots.sf.net)

  \begin{tikzpicture}
    \begin{axis}[
         3d box=background,
      % pretty printing, but irrelevant:
   title={3d box=background},
   samples=5,
   domain=-4:4,
   xtick=-4:4,
   ytick=-4:4,
  ]
  \addplot3[surf] {1*x*y};
 \end{axis}
\end{tikzpicture}

在 PGFplots 的官方文档中,提到了一些关于参数绘图的选项:

  • /pgfplots/参数
  • /pgfplots/参数/var 1d
  • /pgfplots/参数/var 2d

使用 PGFplots 你也可以使用 GNUplot:

\begin{tikzpicture}
  \begin{axis}
    \addplot3 gnuplot[raw gnuplot] {set parametric;splot[t=0:6*pi] cos(t),sin(t),t/2*pi};
  \end{axis}
\end{tikzpicture}

答案2

允许隐藏表面。这里只是第一个示例的代码。如果您需要 pdf 输出,pst-solides3d可以使用xelatex

\documentclass{minimal}
\usepackage{pst-solides3d,pgfplots}

\begin{document}

\psset{viewpoint=30 90 0 rtp2xyz,lightsrc=viewpoint,Decran=90}
\begin{pspicture}(-3,-3)(3,3)
\defFunction[algebraic]{Func}(u,v){cos(u)*sin(v)/3}{sin(u)*sin(v)}{cos(v)}
\psSolid[object=surfaceparametree,
  base=0 pi dup add 0 pi,
  function=Func,linewidth=0.5\pslinewidth,ngrid=25]
\end{pspicture}

\end{document}

相关内容