使 z 缓冲区关注轴线

使 z 缓冲区关注轴线

如果我使用中心轴线,它们似乎不被 z 缓冲区认为有价值。表面被绘制在它们上面,即使它们应该在它们后面 - 就像这样: 隐藏轴

使用的代码:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[%
            axis equal,
            axis lines=center,
            scale uniformly strategy=units only,
            view/h=40,
        ]
        \addplot3[%
            patch,
            opacity=0.8,
            z buffer=auto
        ]
        coordinates { (0,1,0) (1,1,1) (-1,1,1) };
        \end{axis}
    \end{tikzpicture}
\end{document}

我是否必须先绘制透明轴,然后绘制它们后面的对象,然后添加新的轴环境,最终绘制轴线前面的所有对象,或者有没有更优雅的方法来实现这一点?

编辑:我最终自己玩了 z-buffer 并手动绘制轴线,如下所示:

\draw[line width=.275] (axis cs: 0,0,0) -- (axis cs: 0,0,2.55);

但是,当必须放大轴时,这会变得非常烦人,这样您就不会有被遮挡的箭头,将图分成后部和前部,以便能够重新绘制中间的轴线......必须有一个更好的解决方案。

答案1

这是已知的限制pgfplots;没有解决方法(比较参考手册部分“开始使用 3D 之前”)。

你可以采取axis lines*=left这样的措施,使效果不可见。

答案2

你可以尝试tikz-3dplot

例子

例子

在这里你可以看到X-轴将表面“移到”正确的位置。

代码

\documentclass[tikz]{standalone}

\usepackage{tikz-3dplot}

\begin{document}
\tdplotsetmaincoords{70}{40}
\begin{tikzpicture}[scale=2,line join=bevel,tdplot_main_coords,fill opacity=.5]
\tdplotsphericalsurfaceplot[parametricfill]{72}{36}%
{sqrt(15/2)/2*sin(\tdplottheta)^2}{black}%
{2*\tdplotphi - 6 * \tdplottheta}{\draw[color=black,thick,->] (0,0,0)
-- (2,0,0) node[anchor=north east]{$x$};}%
{\draw[color=black,thick,->] (0,0,0)
-- (0,2,0) node[anchor=south east]{$y$};}%
{\draw[color=black,thick,->] (0,0,0)
-- (0,0,1) node[anchor=south]{$z$};}%
\tdplotshowargcolorguide{3}{-.2}{.1}{1}
\end{tikzpicture}
\end{document}

相关内容