이 레벨 곡선 다이어그램을 실제와 똑같이 만드는 방법

이 레벨 곡선 다이어그램을 실제와 똑같이 만드는 방법

여기에 이미지 설명을 입력하세요

이번 포스팅에서는

레벨 곡선과 수평 트레이스의 관계

이미 완성된 아주 멋진 그림이 있지만 일부 세부 사항이 누락되었습니다. 그리고 나는 그것을 깨닫지 못합니다.

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

여기에 이미지 설명을 입력하세요

관련 정보