具有圆形域的 tikz 三维图形

具有圆形域的 tikz 三维图形

我有一个非常简单的函数可以制作 3D 图形。该函数定义如下:

论坛

使用以下代码绘制这个图并不是什么大问题:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{amsmath}
\begin{document}
\pgfplotsset{
  compat=1.8,
  colormap={whitered}{color(0cm)=(white); color(1cm)=(orange!75!red)}
}

\begin{tikzpicture}
  \begin{axis}[
    colormap name=whitered,
    3d box,
    width=15cm,
    view={25}{25},
    enlargelimits=false,
    grid=major,
    domain=-2:6,
    y domain=1:9,
    zmin=0,zmax=7,
    samples=21,
    xlabel=$x$,
    ylabel=$y$,
    zlabel=$z$,
    colorbar,
    colorbar style={
        at={(1,0)},
        anchor=south west,
        height=0.1*\pgfkeysvalueof{/pgfplots/parent axis height}
        }
    ]
    \addplot3 [surf]
      {sqrt((x-2)^2+(y-5)^2)};

    \addplot3 [contour gnuplot = {number=14, labels={false},
      draw color = black}, samples = 21, ]
      {sqrt((x-2)^2+(y-5)^2)};

    \addplot3 [contour gnuplot = {number=14, labels={false}, draw color=black},
        samples=21,z filter/.code={\def\pgfmathresult{20}}]
        {sqrt((x-2)^2+(y-5)^2)};
  \end{axis}
\end{tikzpicture}
\end{document}

这将产生以下输出: 阴谋

现在我的问题:我的域定义如下:

领域

是否有可能将图限制在给定域内?我是否需要采用完全不同的方法,例如除笛卡尔坐标系之外的其他坐标系或类似方法?

答案1

部分解决方案(为了简化,我跳过了轮廓线图,让其作为勇敢者的练习):

使用三向 if(boolean)?(value if true):(value if false)和特殊的“数字” NaN(非数字),并使用选项,unbounded coords=jump 您可以执行以下操作:

\addplot3 [surf, unbounded coords=jump]
    { (x-2)^2+(y-5)^2<9 ? sqrt((x-2)^2+(y-5)^2) : NaN };

你有

输出

使用你的边界 -- (x-1)^2+y^2<9(它不是以椭圆体的中心为中心)这有点奇怪:

其他输出

...但我认为没关系,注意它改变了xy比例,如果你修复它们:

再次,强制秤

相关内容