TikZ PGF:如何根据多项式方程绘制类似陨石坑的 3D 表面?

TikZ PGF:如何根据多项式方程绘制类似陨石坑的 3D 表面?

假设我们有某种像这样的平方三维图:

最小工作示例(MWE):

\documentclass{standalone}
\usepackage{tikz, pgfplots}

\begin{document}

\begin{tikzpicture}
   \begin{axis}[samples=20]
      \addplot3[surf, domain=-2:2] {-x^2-y^2};
   \end{axis}
\end{tikzpicture}

\end{document}

结果截图:

管道流动可视化


x我怎样才能用两个方向和的某些四次多项式公式(y例如-1/3*x^4+x^2和)替换当前图形-1/3*y^4+y^2


期望结果的草稿

最后它看起来应该是这样的:

期望结果的草稿

草稿或多或少是一座圆形的火山,中间有一个火山口,我希望你能想象。:-)

我不知道为什么,但是有几种方法......

\addplot3[surf, domain=-2:2] {(-1/3*y^4+y^2)*(-1/3*y^4+y^2)};

... 没有像我预期的那样出现。

答案1

类似这样的事?(根据迹象表明,这就是所谓的墨西哥帽潜力。)

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

\begin{tikzpicture}
   \begin{axis}[samples=20,zmin=0,zmax=1]
      \addplot3[surf, domain=0:1,domain y=0:360,z buffer=sort]
       ({x*cos(y)},{x*sin(y)},{3*(0.5*x^2-x^4)+0.5});
   \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

或者,如果你

 \addplot3[surf, domain=-1:1] {(x^2+y^2)-0.5*(x^2+y^2)^2};

你会得到

在此处输入图片描述

是的,可以将图扩展到轴,但它并不像人们想象的那么简单(或者我遗漏了一些明显的东西)。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

\begin{tikzpicture}[declare function={f(\x,\y)=(\x^2+\y^2)-0.5*(\x^2+\y^2)^2;}]
   \begin{axis}[samples=20,zmin=0,zmax=1,xmin=-1,xmax=1,ymin=-1,ymax=1]
    % \clip (-1,-1,{f(-1,-1)}) -- (1,-1,{f(1,-1)}) -- (1,1,{f(1,1)})
    % --  (1,1,1) -- (-1,-1,1); % not needed
    \addplot3[surf, domain=-2:2,samples=50,point meta={max(f(x,y),0)}] {f(x,y)};   
   \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

获得更浅的局部最小值的一种方法是增加绘图范围。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}
\begin{tikzpicture}[declare function={f(\x,\y)=(\x^2+\y^2)-0.5*(\x^2+\y^2)^2;}]
\pgfmathsetmacro{\myxmax}{2}
\pgfmathsetmacro{\myzmin}{f(\myxmax,0)}
   \begin{axis}[samples=20,zmin=\myzmin,zmax=1,xmin=-\myxmax,xmax=\myxmax,ymin=-\myxmax,ymax=\myxmax]
    \addplot3[surf, domain=-2:2,samples=50,point meta={max(f(x,y),\myzmin)}] {f(x,y)};   
   \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容