我想要做的是生成旋转曲面的 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}