Edit and compile if you like:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{math}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{1pt}
%
% File name: surface-of-revolution.tex
% Description:
% A geometric representation of a surface of revolution is shown.
%
% Date of creation: October, 17th, 2021.
% Date of last modification: October, 9th, 2022.
% Author: Efraín Soto Apolinar.
% https://www.aprendematematicas.org.mx/author/efrain-soto-apolinar/instructing-courses/
% Source: page 450 of the
% Glosario Ilustrado de Matem\'aticas Escolares.
% https://tinyurl.com/5udm2ufy
%
% Terms of use:
% According to TikZ.net
% https://creativecommons.org/licenses/by-nc-sa/4.0/
% Your commitment to the terms of use is greatly appreciated.
%
\begin{document}
%
\tdplotsetmaincoords{60}{130}
\begin{tikzpicture}[tdplot_main_coords]
% The function that is rotated
\tikzmath{function f(\x) {return 1.5 - 0.35*sin(\x r);};}
\pgfmathsetmacro{\dominio}{2.0}
\pgfmathsetmacro{\xi}{-\dominio}
\pgfmathsetmacro{\step}{(\dominio-\xi)/70.0}
\pgfmathsetmacro{\xs}{\xi+\step}
\pgfmathsetmacro{\max}{3}
% Circumferences (behind the coordiante axis)
\foreach \x in {\xi,\xs,...,\dominio}{
\pgfmathsetmacro{\radio}{f(\x)} % radius of the circumference of the solid of revolution
\draw[cyan,very thick,opacity=0.35] plot[domain=0.5*pi:2.0*pi,smooth,variable=\t] ({\radio*cos(\t r)},{\x},{\radio*sin(\t r});
}
% Part of the solid of revolution behind the coordinate axis
\foreach \angulo in {358,356,...,90}{
\draw[cyan,very thick,rotate around y=\angulo,opacity=0.35] plot[domain=-\dominio:\dominio,smooth,variable=\t] ({0},{\t},{f(\t)});
}
% Graph of the function rotated about the $y$ axis
\draw[red,ultra thick] plot[domain=-\dominio:\dominio,smooth,variable=\t] ({0},{\t},{f(\t)}) node [above right] {$z = f(y)$};
% Coordinate axis
\draw[thick,->] (0,0,0) -- (0,\max,0) node [right] {$y$};
\draw[thick,->] (0,0,0) -- (\max,0,0) node [left] {$x$};
\draw[thick,->] (0,0,0) -- (0,0,\max) node [above] {$z$};
% Circumferences (in front of the coordiante axis)
\foreach \x in {\xi,\xs,...,\dominio}{
\pgfmathsetmacro{\radio}{f(\x)} % Radio del círculo al inicio del sólido de revolución
\draw[cyan,very thick,opacity=0.35] plot[domain=0.0:0.5*pi,smooth,variable=\t] ({\radio*cos(\t r)},{\x},{\radio*sin(\t r});
}
% The solid of revolution (in front of the coordinate axis)
\foreach \angulo in {0,2,...,89}{
\draw[cyan,very thick,rotate around y=\angulo,opacity=0.35] plot[domain=-\dominio:\dominio,smooth,variable=\t] ({0},{\t},{f(\t)});
}
\end{tikzpicture}
\end{document}
Click to download: surface-of-revolution.tex • surface-of-revolution.pdf
Open in Overleaf: surface-of-revolution.tex
See more on the author page of Efraín Soto Apolinar.
