settings.render=8; settings.prc=true; import graph3; import three; import animate; animation A1=animation("moviecylinder"); triple F_orig(pair uv) { real t=uv.x; real s=uv.y; return (0.5*cos(t), 0.5*sin(t), s); } picture pic2; size(pic2,10cm,10cm); surface surf_o=surface(F_orig,(0,-1),(2*pi,1),Spline); draw(pic2,surf_o, surfacepen=material(green+opacity(0.5), emissivepen=0.2 white)); draw(pic2,-1X -- X, arrow=Arrow3(), L=Label("$x$", position=EndPoint, align=W)); draw(pic2,-1Y -- Y, arrow=Arrow3(), L=Label("$y$", position=EndPoint)); draw(pic2,-1Z -- Z, arrow=Arrow3(), L=Label("$z$", position=EndPoint)); real x(real u) {return 0.5*cos(u);} real y(real u) {return 0.5*sin(u);} real z(real u) {return -1;} path3 myc5=graph(x,y,z,0,2*pi,operator ..); draw(pic2,myc5,p=red+1.2bp); draw(pic2,(0.5,0,-1) -- (0.5,0,-0.7), arrow=Arrow3(), p=red); draw(pic2,(0,0.5,-1) -- (0,0.5,-0.7), arrow=Arrow3(), p=red); draw(pic2,(0,-0.5,-1) -- (0,-0.5,-0.7), arrow=Arrow3(), p=red); draw(pic2,(-0.5,0,-1) -- (-0.5,0,-0.7), arrow=Arrow3(), p=red); A1.add(pic2); int NN=30; real h=2/NN; real z_old=-1; for(int i=0; i <= NN; ++i) { real z=-1+h*i; triple center=(0,0,z); picture pic3; size(pic3,10cm,10cm); triple N=(0,0,1); path3 myc1=circle(c=center, r=0.5, normal=N); draw(pic3,myc1,red); surface surf_o=surface(F_orig,(0,z_old),(2*pi,z),Spline); draw(pic3,surf_o, surfacepen=material(green+opacity(0.5), emissivepen=0.2 white)); draw(pic3,-1X -- X, arrow=Arrow3(), L=Label("$x$", position=EndPoint, align=W)); draw(pic3,-1Y -- Y, arrow=Arrow3(), L=Label("$y$", position=EndPoint)); draw(pic3,-1Z -- Z, arrow=Arrow3(), L=Label("$z$", position=EndPoint)); A1.add(pic3); real z_old=z; } A1.movie(BBox(10,Fill(rgb(1,1,1))),delay=1000);