import graph; import animate; animation A=animation("bezier1"); A.global=false; defaultpen(fontsize(20pt)); import graph3; import three; int NN=20; real h=1/NN; triple F_orig(pair uv) { real t=uv.x; real s=uv.y; return (0,t , s); } surface surf_o2=surface(F_orig,(-2,-2),(2,2),20,20,Spline); for(int i=0; i < NN+1; ++i) { picture pic; size(pic,20cm, 20cm); real k=1-2*h*i; triple CamPos = (8,30,20); triple up = (0,0,1); triple target = (-0.5,0,1); currentprojection = perspective(CamPos, up, target); currentprojection.autoadjust=false; draw(pic,-0.5X -- 3X, arrow=Arrow3(), L=Label("$x$", position=EndPoint, align=W)); draw(pic,-0.5Y -- 3Y, arrow=Arrow3(), L=Label("$y$", position=EndPoint)); draw(pic,-0.5Z -- 3Z, arrow=Arrow3(), L=Label("$z$", position=EndPoint)); draw(pic, surf_o2, blue+opacity(0.05),meshpen=black+opacity(0.1),nolight); draw(pic, (k,-1,-0.5)--(k,1,-0.5), blue+linewidth(2pt)); draw(pic, (k,1,0)--(k,1,-0.5), blue+linewidth(2pt)); draw(pic, (k,1,0)--(k,-1,0), blue+linewidth(2pt)); draw(pic, (k,-1,0)--(k,-1,-0.5), blue+linewidth(2pt)); draw(pic, (0,-2/(2-k),-2+3/(2-k))--(0,2/(2-k),-2+3/(2-k)), red+linewidth(2pt)); draw(pic, (0,2/(2-k), -2+4/(2-k))--(0,2/(2-k),-2+3/(2-k)), red+linewidth(2pt)); draw(pic, (0,2/(2-k),-2+4/(2-k))--(0,-2/(2-k), -2+4/(2-k)), red+linewidth(2pt)); draw(pic, (0,-2/(2-k), -2+4/(2-k))--(0,-2/(2-k),-2+3/(2-k)), red+linewidth(2pt)); draw(pic, (2,0,-2)--(k-2+2,-1,1.5-2), black+dotted+linewidth(2pt)); draw(pic, (2,0,-2)--(k-2+2,1,1.5-2), black+dotted+linewidth(2pt)); draw(pic, (2,0,-2)--(k-2+2,1,2-2), black+dotted+linewidth(2pt)); draw(pic, (2,0,-2)--(k-2+2,-1,2-2), black+dotted+linewidth(2pt)); draw(pic, (k,-1,-0.5)--(0,-2/(2-k),-2+3/(2-k)), black+dotted+linewidth(2pt)); draw(pic, (k,1,0)--(0,2/(2-k), -2+4/(2-k)), black+dotted+linewidth(2pt)); draw(pic, (k,1,-0.5)--(0,2/(2-k),-2+3/(2-k)), black+dotted+linewidth(2pt)); draw(pic, (k,-1,0)--(0,-2/(2-k), -2+4/(2-k)), black+dotted+linewidth(2pt)); A.add(pic); save(); } A.movie(loops=3,delay=300);