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