Retour

Source : generationcylindre.mp

Animation flash


generationcylindre.mp
prologues:=2;
input geometriesyr16
vues:=20;
marque_p:="plein";
for vue=0 upto vues:
  figureespace(-5u,-2.5u,5u,7u);
  trace feuillet withcolor blanc;
  Initialisation(5,10,40,350);
  color A,B,E,F,C[],D[];
  B=(0,0,0);
  A-B=(0,0,1.75);
  E-B=(1,0,0);
  F-B=(0,1,0);
  drawarrow cercles(A+(0,0,0.5),(0.2,0,0)+A+(0,0,0.5),A+(0,0,0.5),(0.2,0,0)+A+(0,0,0.5),(0,0.2,0)+A+(0,0,0.5)) dashed evenly;
  trace droite(A,B) dashed dashpattern(on12bp off6bp on3bp off6bp) withcolor gris;
  for l=0 step 5 until (vue*360/vues):
    C[l div 5]-B=Distance(B,E)*((E-B)*cosd(l)/Distance(B,E)+(F-B)*sind(l)/Distance(B,F));
  endfor;
  drawoptions(withcolor orange);
  for l=0 step 5 until (vue*360/vues):
    D[l div 5]-A=Distance(A,E+A)*((E+A-A)*cosd(l)/Distance(A,E+A)+(F+A-A)*sind(l)/Distance(A,F+A));
    trace polygone(A,B,C[l div 5],D[l div 5]) dashed evenly;
  endfor;
  drawoptions();
  trace Projette(C[0])
  for l=5 step 5 until (vue*360/vues):
    ..Projette(C[l div 5])
  endfor;
  trace Projette(D[0])
  for l=5 step 5 until (vue*360/vues):
    ..Projette(D[l div 5])
  endfor;
  transparence polygone(A,B,C[(vue*360/vues) div 5],D[(vue*360/vues) div 5]);
  trace polygone(A,B,C[(vue*360/vues) div 5],D[(vue*360/vues) div 5]);
  finespace;
endfor;
end
 
 
 
color ptcer[];
    for k=0 step 5 until 360 :
      ptcer[k div 5]-_T[1]=Distance(_T[1],_T[2])*((_T[4]-_T[3])*cosd(k)/Distance(_T[3],_T[4])+(_T[5]-_T[3])*sind(k)/Distance(_T[3],_T[5]));
    endfor;
    Cer=Projette(ptcer0)
    for k=0 step 5 until 360 :
      ..Projette(ptcer[k div 5])
    endfor
    ..cycle;