有没有一种简单的方法可以在 TikZ 中制作一个由两个圆圈环绕的双圆环,每个圆圈都有不可见的半个虚线,就像草图中那样?
答案1
您可能已经发现,或者可能没有发现,在 2D 表面上精确编码圆环非常困难(因为它是 3D 的投影)。本着这种精神,我按原样绘制了您的图片,只是通过反复试验,找到正确的长度。这绝对不是一种干净的方法,但我认为它适用于像这样的复杂图片。不需要额外的TikZ
软件包。以下是代码:
\begin{tikzpicture}[rotate=180]
%Torus
\draw (0,0) ellipse (1.6 and .9);
%Hole
\begin{scope}[scale=.8]
\path[rounded corners=24pt] (-.9,0)--(0,.6)--(.9,0) (-.9,0)--(0,-.56)--(.9,0);
\draw[rounded corners=28pt] (-1.1,.1)--(0,-.6)--(1.1,.1);
\draw[rounded corners=24pt] (-.9,0)--(0,.6)--(.9,0);
\end{scope}
%Cut 1
\draw[densely dashed] (0,-.9) arc (270:90:.2 and .365);
\draw (0,-.9) arc (-90:90:.2 and .365);
%Cut 2
\draw (0,.9) arc (90:270:.2 and .348);
\draw[densely dashed] (0,.9) arc (90:-90:.2 and .348);
\end{tikzpicture}
结果如下:
我对我的代码有些不满意:
我画了一个嘴唇朝另一个方向的洞,后来我才意识到你这样做了。所以我只是把它放在
[rotate=180]
开头,而不是让代码合适。只需删除它就可以把它翻转回来。最初这个洞太小了,但它的曲率恰到好处。所以我就把整个洞缩放到看起来更好,因此就有了这个
{scope}[scale=.8]
部分。我认为两个半实半虚的切口应该都朝同一个方向,这是我个人的看法。但这是你的图片,所以就这样吧。如果你确实想这样做,请
[densely dotted]
从同一切口的一端剪切并粘贴到另一端。
结论:对于一个简单(但代码方面困难)的绘图,我有一个糟糕的(但视觉上可以的)解决方案。