
В этом посте,
Связь между кривыми уровня и горизонтальными следами
Есть очень красивая картинка, но не хватает некоторых деталей. И я не могу этого понять.
решение1
Некоторые вещи в таких сюжетах потенциально концептуально интересны, и ответы могут предоставить другим пользователям информацию, которая в некоторой степени абстрактна и, таким образом, полезна. Другие части просто утомительны. Чтобы сделать сюжет именно таким, как вы хотите, IMHO, вам действительно следует довести себя до стадии, на которой вы понимаете основы, а затем просто сделать это.
Ниже приведены некоторые детали, добавленные к посту, на который вы ссылаетесь, и я надеюсь, что это даст вам возможность достичь именно того, чего вы хотите.
\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}