%@DATE: 30 mai 2005

input fichierps;

InitFichierPS(-120,-120,210,120);
u = 1.2cm;

% La distance de base.
d = 3;

% Les points fixes
pair A, B;
A = (0,0);
B = (d,0) scaled u;

% Les deux cercles
path cA, cB;
cA = fullcircle scaled (sqrt(2)*d) scaled u shifted A;
cB = fullcircle scaled (sqrt(2)*d) scaled u shifted B;

% Les articulations.
pair C,D,L;

vardef Point(expr p) =
    draw p withpen pencircle scaled 4;
    draw p withpen pencircle scaled 3 withcolor white;
enddef;

% La lemniscate.
path l;


for i=0 upto 180:
  beginfig(i+1);

    D := point (8*i/180.5+0.01) of cA;
    C := (D + B - A) reflectedabout (B,D);
    L := .5[D,C];    

    fill cA withcolor 0.8white;
         
    drawoptions(withcolor 0.6white);    
    draw cA;
    draw cB;
    drawoptions();

    drawarrow subpath (0,8*i/180.5) of cA;
    
    if i=0: 
	l := L;
    else:
	l := l -- L;
	draw l withpen pencircle scaled 1 withcolor blue;
    fi
        
    drawoptions(withpen pensquare scaled 2 withcolor (1,0.08,0.58));	
    draw A--B;
    draw A--D;
    draw B--C;
    draw D--C;
    drawoptions();
	
    Point(A);
    Point(B);
    Point(C);
    Point(D);
    Point(L);    

  endfig;
endfor;

end