ANIMATIONS (13)
Liste des figures
Figure fig_aa03_300408_animation
figure 0001
Figure fig_aa04_300408_animation
figure 0002
Figure fig_aa05_300408_animation
figure 0003
Figure fig_aa06_300408_animation
figure 0004
Figure fig_aa07_020508_animation
figure 0005
Figure fig_aa08_020508_animation
figure 0006
Figure fig_aa09_070210_animation
figure 0007
Figure fig_aa10_070210_animation
figure 0008
Figure fig_aa11_070210_animation
figure 0009
Figure fig_aa12_070210_animation
figure 0010
Figure fig_aa13_070210_animation
figure 0011
Figure fig_aa14_070210_animation
figure 0012
Figure fig_aa15_070210_animation
figure 0013
Figure 0001: fig_aa03_300408_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0001
/* Un jongleur de bolas tient une chaîne de même longueur que son bras, 
   tous deux tournant à vitesse constante ; 
   quand son bras fait p tours, sa chaîne en fait q 
   (on prend q>0 si les mouvements sont dans le même sens, et q<0 sinon).
   Alors l'extrémité de sa chaîne décrit une rosace d'indice :
   n = |p-q| / |p+q|

  Dans l'exemple : p=1, q=5 et donc n=2/3.  
*/
import animate;
import graph;

settings.tex="pdflatex";
settings.outformat="pdf";

size(7.5cm,0);

animation A;
real a=2, p=1, q=5, n=abs(p-q)/abs(p+q);
pair pA;
real f(real t) {return a*cos(n*t);}

path g=polargraph(f,0,6pi,600,operator ..)--cycle;
filldraw(g,paleblue+white);
 
for(int k=0; k<360; k+=4) {
  save();
  pA=rotate(k,(0,0))*(a/2,0);
  path brasbolas=(0,0)--pA--pA+rotate(q/p*k,(0,0))*(a/2,0);
  draw(brasbolas,1bp+red);
  dot(brasbolas,2bp+blue);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0002: fig_aa04_300408_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0002
/* Voir explication dans l'exemple précédent.
   On se contente dans celui-ci de changer q=5 en q=-5
   pour obtenir une rosace d'indice n=3/2.
*/
settings.tex="pdflatex";
settings.outformat="pdf";
import graph;
import animation;

size(7.5cm,0);

animation A;
real a=2, p=1, q=-5, n=abs(p-q)/abs(p+q);
pair pA;
real f(real t) {return a*cos(n*t);}

path g=polargraph(f,0,4pi,400,operator ..)--cycle;
filldraw(g,paleblue);

for(int k=0; k<360; k+=4) {
  save();
  pA=rotate(k,(0,0))*(a/2,0);
  path brasbolas=(0,0)--pA--pA+rotate(q/p*k,(0,0))*(a/2,0);
  draw(brasbolas,1bp+red);
  dot(brasbolas,2bp+blue);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0003: fig_aa05_300408_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0003
settings.tex="pdflatex";
settings.outformat="pdf";
import geometry;
import animation;

animation A;
size(7.5cm,0);

point A1=(0,0),B1=(2,-1),C1=(1,3),D1=(-2,2),
          A2=(3,5),B2=(6,8),C2=(7,7),D2=(5.5,4);
point barA,barB,barC,barD;        
pen couleur1a=red+opacity(.8),
    couleur2a=blue+opacity(.8),
        couleur3a;
pen couleur1b=green+opacity(.8), 
    couleur2b=red+opacity(.8),
        couleur3b;
path quadri1=A1--B1--C1--D1--cycle,
     quadri2=A2--B2--C2--D2--cycle;

filldraw(quadri1,couleur1a,couleur1b);
filldraw(quadri2,couleur2a,couleur2b);

for (real k=0; k <=1; k+=0.01) {
  save();
  barA=(1-k)*A1+k*A2;
  barB=(1-k)*B1+k*B2;
  barC=(1-k)*C1+k*C2;
  barD=(1-k)*D1+k*D2;
  couleur3a=(1-k)*couleur1a+k*couleur2a;
  couleur3b=(1-k)*couleur1b+k*couleur2b;
  filldraw(barA--barB--barC--barD--cycle,
           couleur3a+opacity(.8),couleur3b+opacity(.8));
  picture pic;
  add(pic,bbox(2mm));
  A.add(pic);
  restore();
}
for (real m=0; m <=1; m+=0.01) {
  save();
  real k=1-m;
  barA=(1-k)*A1+k*A2;
  barB=(1-k)*B1+k*B2;
  barC=(1-k)*C1+k*C2;
  barD=(1-k)*D1+k*D2;
  couleur3a=(1-k)*couleur1a+k*couleur2a;
  couleur3b=(1-k)*couleur1b+k*couleur2b;
  filldraw(barA--barB--barC--barD--cycle,
           couleur3a+opacity(.8),couleur3b+opacity(.8));
  picture pic;
  add(pic,bbox(2mm));
  A.add(pic);
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0004: fig_aa06_300408_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0004
import polyhedron_js;
import animate;

settings.render=0;
settings.tex="pdflatex";
settings.outformat="pdf";

size(7cm,0);
currentprojection=orthographic(1,0.5,0.5);
currentlight=(1,1,2);

animation A;
polyhedron[] parr;
pen[] coul={.7red};

for (int k=0; k<360; k+=3) {
  save();
  transform3 T=rotate(-degrees(2pi*k/360),Z);
  parr[0]=T*truncCube;
  filldraw(parr,coul,op=0.5);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0005: fig_aa07_020508_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0005
/* La néphroïde est une épicycloïde à deux rebroussements. 
   (obtenu notamment en faisant rouler un cercle de rayon a/2
    à l'extérieur d'un cercle de rayon a).
*/
import geometry;
import animate;

settings.tex="pdflatex";
settings.outformat="pdf";

size(7.5cm,0);

animation A;
real a=2;
pair pM, pC, pN;
path nephroide;

draw(scale(a)*unitcircle);

for(int k=0; k<360; k+=3) {
  save();
  pM=rotate(k,(0,0))*(a,0);
  pC=1.5*pM;
  pN=rotate(2*k,pC)*pM;
  nephroide=nephroide..pN;
  draw(shift(pC)*scale(a/2)*unitcircle);
  draw(nephroide,1bp+red);
  draw(pN--pC,1bp+paleblue);dot(pN--pC,3bp+blue);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0006: fig_aa08_020508_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0006
/* La néphroïde est aussi une péricycloïde.
   (On peut l'obtenir aussi en faisant rouler un cercle de rayon 3a/2
    sur un cercle "intérieur" de rayon a).
*/
import geometry;
import animate;

settings.tex="pdflatex";
settings.outformat="pdf";

size(7.5cm,0);

animation A;
real a=2;
pair pM, pC, pN;
path nephroide;

draw(scale(a)*unitcircle);

for(int k=0; k<1080; k+=4) {
  save();
  pM=rotate(k,(0,0))*(a,0);
  pC=-0.5*pM;
  pN=rotate(-2*k/3,pC)*pM;
  nephroide=nephroide..pN;
  draw(shift(pC)*scale(3*a/2)*unitcircle);
  draw(nephroide,1bp+red);
  draw(pN--pC--pM,1bp+paleblue);dot(pN--pC--pM,3bp+blue);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0007: fig_aa09_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0007
import geometry;
import animate;

settings.tex="pdflatex";
settings.outformat="pdf";

unitsize(2cm);

animation A;
int n=10;

for(int k=0; k<n; ++k){
  for(int i=0; i<10; ++i) draw(scale(sqrt(2)*((k/n)+i)/10)*unitcircle,red);
  clip(shift(-1,-1)*scale(2)*unitsquare);
  for(int i=0; i<10; ++i) draw(shift(sqrt(2)*((k/n)+i)/10,0)*((1,-1)--(1,1)),red);
  draw((1,-1)--(1,1),Arrows);
  A.add();
  erase();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0008: fig_aa10_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0008
// Cardioïde comme enveloppe de cercles
import geometry;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

unitsize(2cm);

animation A;
int n=72;

fill(unitcircle,palered);
for(int k=0; k<n; ++k){
  pair pM=dir(90+k/n*360);
  draw(circle((0,1),pM),gray);
  save();
  dot(pM,1bp+red);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0009: fig_aa11_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0009
/* La courbe orthoptique d'une courbe est le lieu des points
   d'où l'on "voit" la courbe sous un angle droit.
   L'orthoptique d'une conique à centre d'excentricité inférieure à rac(2)
   est un cercle appelé cercle orthoptique ou cercle de Monge.
   Pour l'ellipse d'équation x^2/a^2+y^2/b^2=1,
   le cercle de Monge a pour équation :  x^2+y^2 = a^2+b^2
*/   
import geometry;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

size(7.5cm,0);

animation Anim;
real a=3, b=2, r=sqrt(a^2+b^2);
pair pM;
path cerclemonge;

show(currentcoordsys);

ellipse Ell = ellipse((0,0), a, b);
draw(Ell,red);

draw(Label("$D_1$",align=E),Ell.D1,.8bp+lightgray);
draw(Label("$D_2$",align=W),Ell.D2,.8bp+lightgray);
dot("$F_1$",Ell.F1,N,3bp+gray);
dot("$F_2$",Ell.F2,N,3bp+gray);

for(int k=0; k<360; k+=4) {
  pM=rotate(k,(0,0))*(r,0);
  cerclemonge=cerclemonge..pM;
  save();
  draw(cerclemonge,1bp+black);
  line[] tgs=tangents(Ell, pM);
  draw(tgs,0.8*blue);
  perpendicularmark(tgs[0],tgs[1]);
  addMargins(1cm,1cm);
  label("\scriptsize Le cercle de Monge d'\'equation $x^2+y^2=a^2+b^2$ ...",
        (0,1.5*r),Fill(paleblue));
  label("\scriptsize ... de l'ellipse d'\'equation $\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$",
        (0,-1.5*r),Fill(white));
  Anim.add();
  restore();
}
Anim.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0010: fig_aa12_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0010
/* L'astroïde est une hypocycloïde à quatre rebroussements 
   (lieu décrit par un point choisi d'un cercle de rayon a/4 (ou 3a/4)
   roulant à l'intérieur d'un autre cercle de rayon a). 
*/
import geometry;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

size(7.5cm,0);

animation A;
real a=3;
pair pM, pC, pN;
path astroide;

draw(scale(a)*unitcircle);

for(int k=0; k<360; k+=2) {
  save();
  pM=rotate(k,(0,0))*(a,0);
  pC=3/4*pM;
  pN=rotate(-4*k,pC)*pM;
  astroide=astroide..pN;
  draw(circle(pC,a/4));
  draw(astroide,1bp+red);
  draw((0,0)--pC--pN,1bp+paleblue);
  dot((0,0)--pC--pN,3bp+blue);
  A.add();
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0011: fig_aa13_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0011
// Un ancien exemple de Ph. Ivaldi

import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

size(7cm); 
animation A;

void koch(pair A, pair B, int n) { 
          pair C; 
          C=rotate(120, point(A--B,1/3))*A; 
          if (n>0) { 
             koch(A,point(A--B,1/3),n-1); 
             koch(point(A--B,1/3),C,n-1); 
             koch(C,point(A--B,2/3),n-1); 
             koch(point(A--B,2/3),B,n-1); 
          } 
          else draw(A--point(A--B,1/3)--C--point(A--B,2/3)--B);
} 
 
pair z0=(1,0); 
pair z1=rotate(120)*z0; 
pair z2=rotate(120)*z1; 
real pmax=4;
for (int p=0; p<=pmax; p+=1) {
  save();
  koch(z0,z1,p); 
  koch(z1,z2,p); 
  koch(z2,z0,p);
  A.add();
  erase();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0012: fig_aa14_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0012
// ----- Génération d'un cône -----

import three;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";
settings.render=0;

size(7.5cm,0);
currentprojection=orthographic(1,0.5,0.5);

real h=2, abscurv;
triple pO=(0,0,0), pS =(0,0,2h), pA=(h,0,0),
       pB=(0,h,0), pC=(-h,0,0), pD=(0,-h,0);
path3  basegras,base=pA..pB..pC..pD..pA, generatrice;

animation A;
dot("$S$",pS,align=N);
dot("$A$",pA,align=S); dot("$B$",pB,align=SE);
dot("$C$",pC,align=NE); dot("$D$",pD,align=NW);
draw(pA--pS--pC^^pB--pS--pD);
draw(pA--pC^^pB--pD,dashed+grey);
draw(pO--(0,0,2.1*h),dashdotted+grey);
draw(base,grey+white);
draw((0.2h,0,2.1h)..(0,0.2h,2.1h)..(-0.2h,0,2.1h)..(0,-0.2h,2.1h),
      longdashed+1bp+grey,Arrow3());

for(real i=0; i<=1; i+=.01) {
  abscurv = length(base)*i;
  generatrice=pS--point(base,abscurv);
  draw(generatrice,grey+yellow);
  save();
  draw(pO--generatrice--cycle,1.5bp+grey);
  basegras=basegras..point(base,abscurv);
  draw(basegras,1bp+grey);
  picture pic;
  add(pic,bbox(5mm,Fill(paleblue+white)));
  A.add(pic);
  restore();
}
A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.
Figure 0013: fig_aa15_070210_animation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure 0013
import gm;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

unitsize(1cm);

animation A;
pen[] stylo={blue,green,red};
real  xmin=-3, xmax=3, ymin=-2, ymax=2;
int[] k={1,2,3,4,5,6,7,8,9,10,11,12};
real  f(real x,real k) {return atan(k^2*x);}

A = animpdf_famille_fonctions(f,xmin,xmax,ymin,ymax,k,stylo);
for(int i=0; i<A.pictures.length; ++i)
label(A.pictures[i],"$f(x)=\arctan(k^2\times x)$",(xmin,ymax+1.5),E);

A.movie(); // remplacer par la ligne suivante
// label(A.pdf(BBox(1mm,nullpen),delay=500,"controls,loop"));
// pour obtenir une animation dans une seule page d'un pdf.
// controls : pour obtenir les boutons,
// loop : pour que cela tourne en boucle par défaut.

Dernière modification le Thu May 27 22:46:29 CEST 2010 par G.Marris       Valide XHTML