5

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.]

1 Answer 1

5

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}

enter image description here

3
  • 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?
    – Marian G.
    Apr 1, 2019 at 5:28
  • 3
    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

You must log in to answer this question.

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