Retour

Source : pythaobtus.mp


pythaobtus.mp
prologues:=2;
input constantes;
input geometriepoint;
picture anim[],anims[],ensemble;
path piece[],pieces[];
vues:=5;
%Animation gauche
beginfig(1-1);
  affixe.B(u*(6,11));
  affixe.C(u*(12,11));
  affixe.A(u*(8,13));
  affixe.D(z.A rotatedabout(z.B,90));
  affixe.E(z.B rotatedabout(z.A,-90));
  affixe.F(z.C rotatedabout(z.A,90));
  affixe.G(z.A rotatedabout(z.C,-90));
  affixe.I(z.B rotatedabout(z.C,90));
  affixe.J(z.C rotatedabout(z.B,-90));
  affixe.K(projet(C,E,D));
  affixe.L(projet(B,F,G));
  affixe.M(projet(A,I,J));
  affixe.N(projet(C,A,B));
  affixe.O(projet(B,A,C));
  affixe.P(projet(A,B,C));
  affixe.H((z.C--z.K) intersectionpoint (z.B--z.L));
  draw triangle(A,B,C);
  draw demidroite(E,K,1.25) dashed evenly;
  draw demidroite(F,L,1.25) dashed evenly;
  draw demidroite(A,O,1.5) dashed evenly;
  draw demidroite(A,N,1.5) dashed evenly;
  draw demidroite(A,H,1.5) dashed evenly;
  draw z.B--z.D--z.E--z.A--z.F--z.G--z.C--z.I--z.J--cycle;
  draw codeperp(A,P,B,5);
  draw codeperp(A,M,I,5);
  draw codeperp(B,O,C,5);
  draw codeperp(B,L,G,5);
  draw codeperp(C,N,A,5);
  draw codeperp(C,K,D,5);
  draw codeperp(A,E,D,5);
  draw codeperp(E,D,B,5);
  draw codeperp(D,B,A,5);
  draw codesegments(B,A,A,E,2);
  draw codeperp(B,J,I,5);
  draw codeperp(J,I,C,5);
  draw codeperp(I,C,B,5);
  draw codesegments(C,B,B,J,3);
  draw codeperp(C,G,F,5);
  draw codeperp(G,F,A,5);
  draw codeperp(F,A,C,5);
  draw codesegments(A,C,C,G,4);
  draw segment(A,M);
  draw segment(C,K);
  draw segment(B,L);
  label.llft(btex $B$ etex,z.B);
  label.lrt(btex $C$ etex,z.C);
  label.top(btex $E$ etex,z.E);
  label.llft(btex $D$ etex,z.D);
  label.top(btex $F$ etex,z.F);
  label.rt(btex $G$ etex,z.G);
  label.lrt(btex $I$ etex,z.I);
  label.llft(btex $J$ etex,z.J);
  label.ulft(btex $K$ etex,z.K);croix(K);
  label.urt(btex $L$ etex,z.L);croix(L);
  label.bot(btex $M$ etex,z.M);
  label.lrt(btex $P$ etex,z.P);
  labeloffset:=6bp;
  label.rt(btex $H$ etex,z.H);
  label.top(btex $N$ etex,z.N);croix(N);
  labeloffset:=9bp;
  label.ulft(btex $A$ etex,z.A shifted(0.2u,0));
  label.bot(btex $O$ etex,z.O);croix(O);
  labeloffset:=3bp;
  ensemble=currentpicture;
  currentpicture:=nullpicture;
  for vue=0 upto vues:
    piece[vue]=z.B--z.D--(z.K shifted((vue/vues)*(z.C-z.N)))--(z.N shifted((vue/vues)*(z.C-z.N)))--cycle;
    pieces[vue]=z.C--z.G--(z.L shifted((vue/vues)*(z.B-z.O)))--(z.O shifted((vue/vues)*(z.B-z.O)))--cycle;
    fill piece[vue] withcolor jaune;
    draw piece[vue];
    anim[vue]=currentpicture;
    currentpicture:=nullpicture;
    fill pieces[vue] withcolor vert;
    draw pieces[vue];
    anims[vue]=currentpicture;
    currentpicture:=nullpicture;
  endfor
  for vue=1 upto vues:
    piece[vues+vue]=z.J--z.B--(z.A shifted((vue/vues)*(z.P-z.A)))--((z.A shifted (z.J-z.B)) shifted((vue/vues)*(z.P-z.A)))--cycle;
    pieces[vues+vue]=z.I--z.C--(z.A shifted((vue/vues)*(z.P-z.A)))--((z.A shifted (z.J-z.B)) shifted((vue/vues)*(z.P-z.A)))--cycle;
    fill piece[vues+vue] withcolor jaune;
    draw piece[vues+vue];
    anim[vues+vue]=currentpicture;
    currentpicture:=nullpicture;
    fill pieces[vues+vue] withcolor vert;
    draw pieces[vues+vue];
    anims[vues+vue]=currentpicture;
    currentpicture:=nullpicture;
  endfor
  draw ensemble;
endfig;
for vue=0 upto vues:
  beginfig(1+vue);
    draw anim[vue];
    draw ensemble;
  endfig;
endfor;
for vue=1 upto vues:
  beginfig(7+vue-1);
    affixe.A(u*(8,13));
    affixe.B(u*(6,11));
    affixe.C(u*(12,11));
    affixe.D(z.A rotatedabout(z.B,90));    
    draw anim[5] rotatedabout(z.B,(vue/vues)*(-90));
    affixe.Z.[vue](z.D rotatedabout(z.B,(vue/vues)*(-90)));
    affixe.Y.[vue](z.C rotatedabout(z.B,(vue/vues)*(-90)));
    draw arccercle(Z.[vue],D,B) dashed evenly;
    draw arccercle(Y.[vue],C,B) dashed evenly;
    draw ensemble;
  endfig;
endfor
for vue=1 upto vues:
  beginfig(12+vue-1);
    draw anim[vues+vue];
    draw ensemble;
  endfig;
endfor;
%Animation droite
for vue=0 upto vues:
  beginfig(vue+18-1);
    fill piece[10] withcolor jaune;
    draw anims[vue];
    draw ensemble;
  endfig;
endfor;
for vue=1 upto vues:
  beginfig(23+vue-1);
    fill piece[10] withcolor jaune;
    affixe.A(u*(8,13));
    affixe.B(u*(6,11));
    affixe.C(u*(12,11));
    affixe.G(z.A rotatedabout(z.C,-90));
    draw anims[5] rotatedabout(z.C,(vue/vues)*(90));
    affixe.X.[vue](z.G rotatedabout(z.C,(vue/vues)*(90)));
    affixe.W.[vue](z.B rotatedabout(z.C,(vue/vues)*(90)));
    draw arccercle(G,X.[vue],C) dashed evenly;
    draw arccercle(B,W.[vue],C) dashed evenly;
    draw ensemble;
  endfig;
endfor
for vue=1 upto vues:
  beginfig(28+vue-1);
    fill piece[10] withcolor jaune;
    draw anims[vues+vue];
    draw ensemble;
  endfig;
endfor;
end