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
  • It is not my question so you should certainly not remove it on my account. And I cannot upvote your answer again even if you do ;). – cfr Jan 4 '16 at 0:13
  • Nice job +1 :D I just have a non-crucial suggestion, would it be possible to make the planes more transparent (less dark blue), and reduce the light/shadow contrast on the hyperboloid? Like I said, it's not crucial, but I think it could make the figure more pleasing to the eye. :P – Alenanno Jan 4 '16 at 1:22
  • 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

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.