# TikZ Planes Intersecting Hyperboloid

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

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!

• This looks more like a job for Asymptote. Commented Jan 3, 2016 at 22:49
• @HenriMenke Sorry I don't understand. What do you mean? Commented Jan 3, 2016 at 22:50
• Asymptote: The Vector Graphics Language Commented Jan 3, 2016 at 22:54
• Here is a really nice tutorial for Asymptote. Commented Jan 3, 2016 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.... Commented Jan 3, 2016 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.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());

• This is nice. I've never used Asymptote. However, what is the large black dot poking out for? Is that intentional?
– cfr
Commented Jan 4, 2016 at 0:05
• @cfr That is the projection of the arrow head. I can remove it if you wish. Commented Jan 4, 2016 at 0:11
• @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. Commented Jan 4, 2016 at 9:05
• @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. Commented Jan 4, 2016 at 21:37
• @user11128 You are implying, that I understand Asymptote: I don't. Commented Jan 4, 2016 at 22:13