pgfplots 中的同轴电缆

pgfplots 中的同轴电缆

我想用 绘制同轴电缆pgfplots。它或多或少在该程序中完成,因为在我的文档中,我还想在电缆旁边添加一些 3D 图。(我想也可以使用纯解决方案,但出于上述原因,TikZ它必须使用坐标)。pgfplots

我使用下面的代码,结果如下。你或多或少可以看到问题所在:内电缆出现在外电缆的顶部。以相反的顺序编写两条电缆的代码会使内电缆处于外电缆后面的不可见位置,这也是一个同样糟糕的解决方案。有人能解决这个问题吗,也就是说,让内电缆看起来真的之内外面的那个?

\documentclass{memoir}

\usepackage{tikz,pgfplots}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[axis equal image]

    \addplot3[surf,shader=interp,z buffer=sort,variable=\u,variable y=\v,domain=0:80, y domain=0:360] ({\u},{13*cos(\v)}, {13*sin(\v)});

    \addplot3[surf,shader=interp,z buffer=sort,variable=\u,variable y=\v,domain=0:80, y domain=0:360,colormap/cool] ({\u},{4*cos(\v)}, {4*sin(\v)});
    \end{axis}
    \end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

您可以按照 Jake 的建议分离外部电缆。

\documentclass{memoir}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[axis equal image]

       \addplot3[surf,shader=interp,z buffer=sort,variable=\u,variable y=\v,domain=0:80,
                    y domain=-90:90] ({\u},{13*cos(\v)}, {13*sin(\v)});
       \addplot3[surf,shader=interp,z buffer=sort,variable=\u,variable y=\v,domain=0:80,
                    y domain=0:360,colormap/cool] ({\u},{4*cos(\v)}, {4*sin(\v)});
       \addplot3[surf,shader=interp,z buffer=sort,variable=\u,variable y=\v,domain=0:80,
                    y domain=90:270] ({\u},{13*cos(\v)}, {13*sin(\v)});
    \end{axis}
   \end{tikzpicture}

\end{document}

在此处输入图片描述

hide axis

在此处输入图片描述

相关内容