答案1
我给出一个asymptote
例子,因为这可以产生更好的输出。然而,半圆环的参数化也可以用于其他包。
\documentclass{article}
\usepackage[inline]{asymptote}
\begin{document}
\thispagestyle{empty}
\begin{asy}
size(200);
import graph3;
currentprojection=perspective(5,6,3);
real R=4;
real a=1;
triple fs(pair t) {
return ((R+a*Cos(t.y))*Cos(t.x),(R+a*Cos(t.y))*Sin(t.x),a*Sin(t.y));
};
surface s=surface(fs,(0,180),(360,360),8,8,Spline);
draw(s,surfacepen=material(green+opacity(0.6), emissivepen=0.2*white),render(compression=Low,merge=true));
xaxis3(Label("$x$",1),xmin=0,xmax=7,Arrow3);
yaxis3(Label("$y$",1),ymin=0,ymax=7,Arrow3);
zaxis3(Label("$z$",1),zmin=0,zmax=4,Arrow3);
draw((4/sqrt(2),4/sqrt(2),-1)--(4/sqrt(2),4/sqrt(2),-4),blue,Arrow3);
\end{asy}
\end{document}
当然,需要asy
在两次编译之间运行。
这是可能的画出类似...的图画pgfplots
。
\documentclass[svgnames]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
axis equal,
domain=0:360,
y domain=180:360,
ticks=none,
view={130}{-35}
]
\addplot3 [surf, color=green, opacity=0.1,faceted
color=green!50!black,fill opacity=0.5%,faceted color=blue,z buffer=sort
]({(4+cos(y))*cos(x)},{(4+cos(y))*sin(x)},{sin(y)-0.01});
\end{axis}
\end{tikzpicture}
\end{document}
然而,结果可能不那么令人满意。当然,通过额外的努力,人们可以改善这种情况。另一方面,好消息asymptote
是,这些额外的努力是不必要的。