
En esta publicación,
Relación entre curvas de nivel y trazas horizontales
Hay una foto muy bonita ya hecha, pero faltan algunos detalles. Y no puedo darme cuenta.
Respuesta1
Algunas cosas en tales tramas son potencialmente interesantes desde el punto de vista conceptual, y las respuestas pueden proporcionar a otros usuarios información que es hasta cierto punto abstracta y, por tanto, útil. Otras partes son simplemente tediosas. Para hacer la trama exactamente de la misma manera que deseas, en mi humilde opinión, deberías llegar a una etapa en la que comprendas los conceptos básicos y luego simplemente hacerlo.
Lo siguiente agregó algunos detalles a la publicación a la que vincula, y espero que esto le brinde el kilometraje para lograr precisamente lo que desea.
\documentclass[tikz,border=3mm]{standalone}
\makeatletter
\pgfmathdeclarefunction{phicrit}{0}{%
\begingroup%
\pgfmathparse{atan2(\pgf@xx,\pgf@yx)}%
\pgfmathsmuggle\pgfmathresult\endgroup%
}%
\makeatother
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=15cm,
axis lines=middle,ymin=0,xmin=0,zmin=0,zmax=50,smooth,
colormap={irk}{color=(cyan!50) color=(cyan)},point meta=-z-x-y,view={115}{20},
xtick=\empty,ytick=\empty,ztick={0,45},
declare function={f(\x)=30+15*cos(\x*36);}]
\pgfplotsinvokeforeach{20,25,30,35,40,45}{%
\draw[red] (7,7,0) circle[radius={acos((#1-30)/15)/36}];
\path ({7+cos(-50+5*#1)*acos((#1-30)/15)/36},{7+sin(-50+5*#1)*acos((#1-30)/15)/36},0)
node[inner sep=0.5pt,fill=white,font=\tiny] {$k=#1$};
\draw[dashed] (7,{7-acos((#1-30)/15)/36},0) --
(7,{7-acos((#1-30)/15)/36},#1) (7,{7+acos((#1-30)/15)/36},0) --
(7,{7+acos((#1-30)/15)/36},#1);
\addplot3[domain=phicrit+30-#1/3:phicrit+15+180-#1/3,color=cyan,samples y=0,smooth,
dashed]
({7+cos(x)*acos((#1-30)/15)/36},{7+sin(x)*acos((#1-30)/15)/36},{#1});
}
%
\addplot3[domain=-5:5,color=gray,samples y=0] ({7},{7+x},{f(x)});
%
\addplot3[surf,shader=interp,domain y=0:360,domain=0:5,z buffer=sort,
opacity=0.8]
({7+x*cos(y)},{7+x*sin(y)},{f(x)});
\pgfplotsinvokeforeach{20,25,30,35,40,45}{%
\addplot3[domain=phicrit+30-#1/3:phicrit-30-180+45-#1/3,color=cyan,samples y=0,smooth]
({7+cos(x)*acos((#1-30)/15)/36},{7+sin(x)*acos((#1-30)/15)/36},{#1});
}
\end{axis}
\end{tikzpicture}
\end{document}