# Asymptote: 3d graph over a disc

Is there a straightforward way to draw a 3D graph over a disc domain? Say z=x^2-y^2 for x^2+y^2<1.

[I just started to use asymptote; this page explained me how to do it for a rectangular domain. I hope it is an easy question.]

One way to make sure that x^2+y^2<1 is to use polar coordinates. Then x=r cos(phi) and y=r sin(phi).

\documentclass[variwidth,border=3.14mm]{standalone}
\usepackage{asypictureB}
\begin{document}
\begin{asypicture}{name=discgraph}
usepackage("mathrsfs");
import graph3;
import solids;
import interpolate;

settings.outformat="pdf";

size(500);

defaultpen(0.5mm);
pen darkgreen=rgb(0,138/255,122/255);

draw(Label("$x$",1),(0,0,0)--(1.2,0,0),darkgreen,Arrow3);
draw(Label("$y$",1),(0,0,0)--(0,1.2,0),darkgreen,Arrow3);
draw(Label("$f(x,y)$",1),(0,0,0)--(0,0,0.6),darkgreen,Arrow3);

//function: call the radial coordinate r=t.x and the angle phi=t.y
triple f(pair t) {
return ((t.x)*cos(t.y), (t.x)*sin(t.y),
((t.x)*cos(t.y))^2-((t.x)*sin(t.y))^2);
}

surface s=surface(f,(0,1),(0.49,2.5*pi),32,16,
usplinetype=new splinetype[] {notaknot,notaknot,monotonic},
vsplinetype=Spline);
pen p=rgb(0,0,.7);
draw(s,lightolive+white);
\end{asypicture}
\end{document}


• Thank you, but is there a direct way to make a condition x^2+y^2<1 for the arguments? Apr 1, 2019 at 4:31
• @marmot: The x-axis near origin should be hidden from the given point of view. Is there any way to improve this issue? E.g., by setting some samples-option? Apr 1, 2019 at 5:28
• A line has a thickness, a surface not. It is why you see the x-axis near origin. You can observe the same behavior with a simple square surface and the x-axis. Perhaps it is possible to avoid its by creating two z translated surfaces, but you have to manage the boundary...
– O.G.
Apr 1, 2019 at 13:16