I would like to draw something like the image below (or as close as possible!)enter image description here.

I cannot copy and paste it directly into the presentation I am writing as I need to do quite a few edits.

Unfortunately this is way beyond my TikZ skills but if anyone is able to help me produce this it would be greatly appreciated and then hopefully I can take it from there and perform the edits I need (adding extra planes etc...)

If it helps, out of the planes shown, I only need the leftmost one.

Thanks very much for any help!

  • 1
    This looks more like a job for Asymptote. – Henri Menke Jan 3 '16 at 22:49
  • @HenriMenke Sorry I don't understand. What do you mean? – user11128 Jan 3 '16 at 22:50
  • Here is a really nice tutorial for Asymptote. – Henri Menke Jan 3 '16 at 22:56
  • I don't necessarily need the plane to be "hidden" in places inside/behind the hyperboloid. If it's possible to just draw a hyperboloid with a plane through the origin of the ambient space (doesn't have to be as beautiful as the picture above haha!) in TikZ then I'd probably prefer that option.... – user11128 Jan 3 '16 at 23:00

Here is a try with Asymptote (I'm a total Asymptote newbie myself). I copy-pasted parts from this answer and from this tutorial. Unfortunately, Ghostscript in Debian GNU/Linux is buggy. Therefore, I could not place labels.

settings.render = 16;
settings.prc = false;
import three;
import graph;


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));
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(surface(shift(s*X)*p), surfacepen=planepen);


enter image description here

  • This is nice. I've never used Asymptote. However, what is the large black dot poking out for? Is that intentional? – cfr Jan 4 '16 at 0:05
  • @cfr That is the projection of the arrow head. I can remove it if you wish. – Henri Menke Jan 4 '16 at 0:11
  • 1
    @Alenanno I processed your requests and found a computer with a non-broken Ghostscript, so now with labels. You are right, it looks much nicer this way. – Henri Menke Jan 4 '16 at 9:05
  • 1
    @user11128 Your modifications can easily be done. Reading this tutorial will equip you with all the necessary skills (This might seem like an unfriendly response, but I want you to learn from my answer). The code is not specific to GNU/Linux. You can download a Windows version of Asymptote from here. – Henri Menke Jan 4 '16 at 21:37
  • 1
    @user11128 You are implying, that I understand Asymptote: I don't. – Henri Menke Jan 4 '16 at 22:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.