import graph3; import animation; import solids; settings.tex="pdflatex"; settings.prc=false; settings.render=4; currentprojection=orthographic((0,5,2)); currentlight=(0,5,5); unitsize(1cm); real R=3; real a=1; int n=8; path3[] p=new path3[n]; animation A; for(int i=0; i < n; ++i) { triple g(real s) { return ((R-a*cos(2*pi*s))*cos(2*pi/(1+i+s)), (R-a*cos(2*pi*s))*sin(2*pi/(1+i+s)), -a*sin(2*pi*s)); } p[i]=graph(g,0,1,operator ..); } triple f(pair t) { return ((R+a*cos(t.y))*cos(t.x),(R+a*cos(t.y))*sin(t.x),a*sin(t.y)); } surface s=surface(f,(0,0),(2pi,2pi),8,8,Spline); for(int i=0; i < n; ++i){ picture fig; size3(fig,400); draw(fig,s,yellow); for(int j=0;j <= i; ++j) draw(fig,p[j],blue+linewidth(4)); A.add(fig); } A.movie(BBox(10,Fill(rgb(0.98,0.98,0.9))),delay=100);