如何通过旋转函数的二维图来生成三维曲面图?

如何通过旋转函数的二维图来生成三维曲面图?

我想要做的是生成旋转曲面的 3D 图。到目前为止,我已经实现了以下代码...

\documentclass[border= 5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{colormap={bluered}{rgb255(0cm)=(0,0,180);rgb255(1cm)=(0,255,255);rgb255(2cm)=(100,255,0);rgb255(3cm)=(255,255,0);rgb255(4cm)=(255,0,0); rgb255(5cm)=(128,0,0)}} 
\begin{document}
\begin{tikzpicture} 
\begin{axis} [colormap/bluered]
\addplot3 [surf,samples=100,domain=0:180,y domain=0:2*pi]({x},{sin(x)*cos(deg(y))},{sin(x)*sin(deg(y))}); 
\end{axis} 
\end{tikzpicture}
\end{document}

这最终导致 sin(x) 函数沿 x 轴旋转,并再次绕 x 轴旋转形成一个叶瓣……图像在这里:

在此处输入图片描述

我需要的是...函数(假设为 sin(x))沿着 x 轴但绕 z 轴旋转...(对于 sin(x),图像应该像岩石落入水面时产生的波浪一样)。

颜色也有问题......似乎上面的黄色不应该存在......

答案1

对于像这样的图,通常最好使用它来z buffer=sort确保元素以正确的顺序出现。

要获得由绕 z 轴旋转的函数组成的曲面,可以使用如下表达式:

    ({sin(x)*y},{cos(x)*y},{ <function of y> }); 

function of y您要旋转的函数在哪里:

\documentclass[border= 5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture} 
\begin{axis} [colormap/greenyellow, axis equal]
\addplot3 [surf,shader=faceted interp, samples=25,domain=0:360,y domain=0:1080, z buffer=sort]
    ({sin(x)*y},{cos(x)*y},{cos(y)*50}); 
\end{axis} 
\end{tikzpicture}
\end{document}

相关内容