我想绘制 3D 曲面大纲使用 tikz 或 pgfplots 的 3D 功能。例如,下面的代码创建了一个圆柱“罐”表面,但它只对\h
0 到 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}