pgf 图中 3D 球面坐标系

pgf 图中 3D 球面坐标系

我刚刚学习了 pgf-plots 中的 3d 矩形图,现在我需要在球面坐标中绘制图形。我一直在阅读手册,但找不到答案。有没有一种简单的方法来绘制诸如 rho=1+sin(theta)*sin(phi) 之类的东西。谢谢你的帮助。

\begin{tikzpicture}
\begin{axis}[
    xmin=-5,xmax=5,
    ymin=-5,ymax=5,
    zmin=-5,zmax=5,
    xlabel={$x$},
    ylabel={$y$},
    zlabel={$z$},
    zlabel style={rotate=90},
    view={75}{20}]
    addplot3[surf,opacity=0.75,domain=-360:360,y domain=-360:360,samples=20]({x},{y},{1+0.2*sin(x)*sin(y)});
\end{axis}
\end{tikzpicture}

答案1

您可以在常规语法中使用参数方程

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.13,colormap/viridis}
\begin{document}
\begin{tikzpicture}
\begin{axis}[trig format=rad,view={40}{45}]
\addplot3+[no marks,mesh,domain=-pi/2:pi/2,y domain=0:2*pi,samples=61,samples y=61]
                    ({cos(x)*cos(y)},{cos(x)*sin(y)},{1 + 0.2*sin(x)*sin(y)});
\end{axis}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

对于更复杂的情况,基本上,您必须制作一个小型解析器或将其发送到更强大的语法处理程序,这gnuplot是一个非常好的选择。您必须确保 gnuplot 位于系统路径上,并且您的编辑器使用选项调用 TeX -shell-escape(或-enable-write18在 Windows 上)进行通信gnuplot

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13,colormap/viridis}
\begin{document}
\begin{tikzpicture}
\begin{axis}%[view={-40}{45}]
\addplot3+[no marks,mesh,raw gnuplot,samples=] gnuplot {
r = 1;
set samples 101;
set parametric;
set urange [0:2*pi];
set vrange [-pi/2:pi/2];
fx(v,u) = r*cos(v)*cos(u);
fy(v,u) = r*cos(v)*sin(u);
fz(v,u) = r + 0.2*sin(u)*sin(v);
splot fx(v,u),fy(v,u),fz(v,u);
};
\end{axis}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

相关内容