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}