I'm trying to draw the intersection of a plane with a hyperboloid with asymptote. The result should either be 2 crossing lines or a conic (ellipse, circle or parabola).

Heres the code:

import solids;

revolution hyperboloid=revolution(graph(new triple(real z) {
  return (sqrt(1+z*z),0,z);},-2,2,20,operator ..),axis=Z);

draw(surface(hyperboloid), surfacepen=material(diffusepen=white+opacity(0.6),emissivepen=gray(0.6)));


path3 p=plane((0,6,0),(0,0,6),O=(1,-3,-3));

I have tried intersectionpoints but the code doesnt work.

1 Answer 1


Up to now the intersection of two surfaces is not present in Asymptote. From a mathematical and numerical point of view it is a difficult problem, it needs a lot of computations. You are welcome to implement it :) I am not a specialist of this subject but if any person has a not-too-difficult method to implement Bezier patch intersection I am interested with the reference.

Only intersection surface/path3 is available.

In your specific case, perhaps that you are able to find the equation of the intersection.

  • 3
    Actually, finding the intersection of two surfaces is easier if one of them is implicitly defined, since you can use the contour module. See my code for surfacepaths.asy in tex.stackexchange.com/a/159365/484 Nov 24, 2014 at 15:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .