pgfplots 表面不与邻居进行插值

pgfplots 表面不与邻居进行插值

我正在尝试使用 pgfplots 绘制一个相对非标准的曲面。该函数声明正确,当我创建散点图时,一切看起来都正常(请注意,附图中的这个角度是沿 y 维度观察的,因此显示为 2d)。但是,当我尝试将其转换为曲面图时,出现了一些奇怪的行为,即沿 x 维度的远距离点试图插值在一起(参见第二幅图)。我该如何解决这个问题,使点仅与它们的邻居插值?

\usepackage{pgfplots}
\pgfplotsset{compat = newest}     
\begin{document}
    \tikzset{declare function={
        fp1(\x)= 0.3 + 9 * (\x-0.25)^2;
        fp2(\x) = 10 * (\x - 1)^4 + 0.23750000000000004;
        fdd(\x) = (\x < 0.5)?(fp1(\x)):(fp2(\x));
        checkx(\x, \y) = (\x + \y > 1)?(1 - \x):(\x);
        checky(\x, \y) = (\x + \y > 1)?(1 - \y):(\y);
        triz(\x, \y) = checkx(\x, \y) + 0.5 * checky(\x, \y);}}

    \begin{tikzpicture}
      \begin{axis}[view={0}{0}]
        \addplot3 [scatter,only marks, samples = 20, domain = 0:1, y domain = 0:1, z buffer=sort] ({triz(x,y)},{checky(x,y)},{fdd(triz(x,y))});
      \end{axis}
    \end{tikzpicture}
    
    \begin{tikzpicture}
      \begin{axis}[view={0}{0}]
          \addplot3 [surf, shader = interp, mesh/ordering=x varies, samples = 20, domain = 0:1, y domain = 0:1, z buffer=sort] ({triz(x,y)},{checky(x,y)},{fdd(triz(x,y))});
      \end{axis}
    \end{tikzpicture}

\end{document}

图片 1 图片 2

相关内容