settings.outformat="pdf"; settings.prc=true; settings.render=8; defaultpen(fontsize(8pt)); import graph3; import three; size(9cm,0); triple F_orig(pair uv) { real t=uv.x; real s=uv.y; return (cos(t)-s*sin(t), sin(t)+s*cos(t), s); } surface surf_o=surface(F_orig,(-2*pi,-2*pi),(2*pi,2*pi),Spline); draw(surf_o, surfacepen=material(green+opacity(0.5), emissivepen=0.2 white)); draw(-1.5X -- 5X, arrow=Arrow3(), L=Label("$x$", position=EndPoint, align=W)); draw(-1.5Y -- 5Y, arrow=Arrow3(), L=Label("$y$", position=EndPoint)); draw(-1.5Z -- 5Z, arrow=Arrow3(), L=Label("$z$", position=EndPoint)); int N=20; for (int i=0; i<N; ++i) { real u=2*pi/N*i; real x1=cos(u)-2*pi*sin(u); real y1=sin(u)+2*pi*cos(u); real z1=2*pi; real x2=cos(u)+2*pi*sin(u); real y2=sin(u)-2*pi*cos(u); real z2=-2*pi; triple p1=(x1,y1,z1); triple p2=(x2,y2,z2); draw(p1 -- p2, blue); }