TikZ 平面与双曲面相交

TikZ 平面与双曲面相交

我想画一些类似下面的图像(或尽可能接近!)在此处输入图片描述

我无法将其直接复制并粘贴到我正在编写的演示文稿中,因为我需要做相当多的编辑。

不幸的是,这远远超出了我的 TikZ 技能,但如果有人能够帮助我制作它,我将不胜感激,然后希望我可以从那里开始并执行我需要的编辑(添加额外的飞机等...)

如果有帮助的话,在所示的飞机中,我只需要最左边的一架。

非常感谢您的帮助!

答案1

以下是使用 Asymptote 的尝试(我自己也是 Asymptote 的新手)。我从以下代码中复制粘贴了部分内容:这个答案以及来自本教程。不幸的是,Debian GNU/Linux 中的 Ghostscript 有缺陷。因此,我无法放置标签。

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());

在此处输入图片描述

相关内容