
답변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}