答案1
这是其中一种方法。该示例主要使用 2D 坐标进行绘制。它不是 3D 绘制,因此您必须查看需要在其他元素之后/之前绘制的内容。
我还利用了\clip
正确的覆盖,这是必要的,因为tikz
只是在已经绘制的元素之上绘制并且不支持 3D 对象的可见性。
\documentclass[tikz, border=0mm]{standalone}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}[show background rectangle,
background rectangle/.style={fill=black!60},
color=white,
very thick]
\clip (-3,-1.5) rectangle (2,1.5);
\begin{scope}[xshift=-1cm, yshift=.5cm]
\draw [fill=black!70] (-1,0) ellipse (2cm and .5cm);
\draw (0,0,0) arc (135:405:.71cm) -- cycle;
\draw [fill=black!60] (-1,0) ellipse (1cm and .25cm);
\clip (-2,-2) rectangle (1.5,-1);
\draw (-1,-1) ellipse (2cm and .5cm);
\end{scope}
\begin{scope}
\draw [fill=black!70] (0,0,0) -- ++(1,0,0) -- ++(0,0,-4) -- ++(-1,0,0) -- cycle;
\draw (1,-1,0) -- ++(0,0,-3);
\draw [fill=black!50] (0,0,0) arc (135:405:.71cm) -- cycle;
\end{scope}
\end{tikzpicture}
\end{document}
答案2
在我看来,你应该在其他程序中计算二维坐标,然后只需使用\draw
tikz 中的命令用该坐标绘制图形。
如果在 3D 坐标(tikz-3dplot)中绘制它,则会遇到在正确的位置绘制弧的问题。