在 Tikz 中创建 3D 表面的轮廓

在 Tikz 中创建 3D 表面的轮廓

我想绘制 3D 曲面大纲使用 tikz 或 pgfplots 的 3D 功能。例如,下面的代码创建了一个圆柱“罐”表面,但它只对\h0 到 90 之间的倾斜视角有效。如果它高于或低于这些值,你会看到盖子的边缘是可见的,而它们不应该是可见的。

我想知道是否有一种更简单的方法可以在 tikz 中定义一般的 3D 表面,但只显示表面的轮廓并用白色填充内部。因此,只有表面的边缘应该可见,表面后面的任何边缘都应该被白色遮挡。

\documentclass{standalone}

\usepackage{tikz}
\usepackage{tikz-3dplot}

\begin{document}
    % set the viewing angle
    \def\a{45}
    \def\h{55}
    \tdplotsetmaincoords{\h}{\a}
    \begin{tikzpicture}
    [scale=7,
    tdplot_main_coords,
    axis/.style={->,black,very thin},
    curve/.style={black,thin}]
    % radius and axes
    \def\radius{.1}
    \def\axissize{.3}
    \def\th{0.25}



    \tdplotsinandcos{\sintheta}{\costheta}{0}
    \tdplotdrawarc[curve,thick]{(0,0,\th)}{\radius*\costheta}{\a-360}{\a}{}{}
    \tdplotdrawarc[curve,thick]{(0,0,0)}{\radius*\costheta}{\a}{\a-180}{}{}
    \tdplotsinandcos{\sintheta}{\costheta}{\a}
    \draw[thick] (\radius*\costheta,\radius*\sintheta,0) {} -- (\radius*\costheta,\radius*\sintheta,\th);

    \tdplotsinandcos{\sintheta}{\costheta}{\a+180}
    \draw[thick] (\radius*\costheta,\radius*\sintheta,0) -- (\radius*\costheta,\radius*\sintheta,\th);


    \end{tikzpicture}

\end{document}

相关内容