22 Nov 2007

## Animation with Asymptote – fig0130

Category: Animation,Asymptote

 (Compiled with Asymptote version 1.86svn-r4626)
Movie flash (swf)
This animation is available in the Syracuse web site.
```
// From an idea posted by Fabrice Couvreur
import geometry;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

point A=(0,0), B=(8,0), C=(8,10);
unitsize(5cm/B.x,5cm/C.y);
animation Anim,Anim1;
path locus;

triangle t=triangle(A,B,C);
transform proj=projection(t.BC);
draw(t,linewidth(bp));
label(t);
segment s=segment(t.AB);
line l1 =line(t.BC);

int n=50; // Points number of the locus
real a=0, step=1/(n-1);
for (int i=0; i < n; ++i) {
save(); // Geometry part
point M=point(s,a);
line l2=parallel(M,l1);
point Np=intersectionpoint(l2,t.AC);
point P=proj*Np;
dot("\$M\$",M,S,0.8*red);
dot("\$P\$",P,E,0.8*red);
dot("\$N\$",Np,W,0.8*red);
fill(M--Np--P--B--cycle,0.8*red);
perpendicularmark(t.BC,t.BA);
Anim.add(); // Anim contain only the geometry part
restore();
// Graph part
picture gph; // picture of the graph
unitsize(gph,5cm/B.x,4cm/C.y); // units for the graph
show(gph,currentcoordsys);
point Sp=(a*abs(B-A),abs(M-B)*abs(M-Np));
locus=locus..Sp;
draw(gph,locus, bp+0.8*red);
Anim1.add(gph); // Anim1 contain only the graph part
a += step;
}

Anim1.export(); // make all Anim1 pictures to the same size.
Anim1.purge();

for (int i=0; i < Anim.pictures.length; ++i) {
// draw axis on all pictures of Anim1
draw(Anim1.pictures[i],Label("\$x\$",align=S,position=EndPoint),hline,Arrow);
draw(Anim1.pictures[i],Label("\$y\$",align=W,position=EndPoint),vline,Arrow);
// add each graph to the corresponding geometric picture