我从之前的线程中获得了平面与双曲面相交的代码(见下文),现在我想将双曲面与垂直轴相交的上点标记为 A。
如果我尝试使用简单的点命令执行此操作,点似乎半隐藏在双曲面后面,这是不理想的。现在从阅读本指南的第 77-78 页(http://math.uchicago.edu/~cstaats/Charles_Staats_III/Notes_and_papers_files/asymptote_tutorial.pdf),这似乎是因为 Asymptote 不知道哪个应该在顶部,只是在猜测。建议的解决方案是切掉表面的相关部分,但它们只提供了一个如何对圆形等简单物体执行此操作的示例,但我的双曲面情况要复杂得多。有人有什么建议吗?
谢谢。
settings.outformat="pdf";
settings.render = 16;
settings.prc = false;
import three;
import graph;
size(8cm,0);
currentprojection = orthographic(2,0,10, up=Y);
draw(-2X--2X,arrow=Arrow3(),L=Label("$X$", position=EndPoint));
draw(-2Y--2Y,arrow=Arrow3(),L=Label("$U$", position=EndPoint));
draw(-2Z--2Z);
label("$w \to \infty$",(2,1,0));
draw((0.5,-1,1)--(0.7,-0.2,1),arrow=Arrow3(size=5bp),L=Label("$\Pi_w$", position=BeginPoint));
draw((1.5,-1.3,0)--(1.3,-0.8,0),arrow=Arrow3(size=5bp),L=Label("$X+U = L \mathrm{e}^{w/L}$", position=BeginPoint));
pen color = red;
material surfacepen = material(diffusepen=color+opacity(1.0), emissivepen=0.5*color);
pen color = blue;
material planepen = material(diffusepen=opacity(0.4), emissivepen=0.8*color);
real f(real x) { return .5*x*x+.5; }
path3 p3 = path3(graph(f, -1, 1, operator..));
surface solidsurface = surface(p3, c=O, axis=X);
draw(solidsurface, surfacepen=surfacepen);
path3 p = (-1,1,1) -- (1,-1,1) -- (1,-1,-1) -- (-1,1,-1) -- cycle;
for (real s=0.0; s<=1.0; s+=0.5)
{
draw(shift(s*X)*p);
draw(surface(shift(s*X)*p), surfacepen=planepen);
}
shipout(scale(4.0)*currentpicture.fit());