/*syracuse*/ import geometry_dev; import animate; // settings.tex="pdflatex"; // settings.outformat="pdf"; animation anim; size(12cm); ellipse ellipse(point F1, real a, real c, point tgt, vector dir) { line d=line(tgt,tgt+dir); line bis=perpendicular(tgt,d); line l=line(tgt,reflect(bis)*F1); point[] F=intersectionpoints(circle(F1,2*c),l); real a0=abs(F1-tgt)+abs(F[0]-tgt); real a1=F.length > 1 ? abs(F1-tgt)+abs(F[1]-tgt) : 0; return abs(a0/2-a) < 1e-5 ? ellipse(F1,F[0],a0/2) : ellipse(F1,F[1],a1/2); } point F1=(0,0), F2=(0,-3); dot("F",F1); ellipse el1=ellipse(F1,F2,2), el2; point Fp1=shift(0,2*el1.a)*F1; dot("F'",Fp1); line tgt, saxe=line(F1,false,-F2); for (int i=0; i < 360; i += 5) { save(); ellipse el=rotate(i,F1)*el1; point M=intersectionpoints(el,saxe)[0]; tgt=tangents(el,M)[0]; draw(tgt, 0.8*red); el2=ellipse(Fp1,el1.a,el1.c,M,tgt.u); draw(el2^^el, linewidth(bp)); anim.add(); restore(); } erase(); anim.movie();