3.24.3 Animation d’une séquence d’objets graphiques :animation
animation permet de dessiner chaque objet d’une suite d’objets
graphiques avec un temps d’affichage donné. En général les objets de la
suite dépendent d’un paramètre, il faut alors créer une suite en faisant
varier ce paramètre.
animation a comme paramètre une séquence d’objets graphiques.
Remarque
Si on veut que dans l’animation plusieurs objets graphiques soient affichès
en même temps, il faut mettre ces objets dans une liste, par exemple :
On tape :
plotfunc(x^
2);animation([point(1),segment(1,1+i), point(1+i)],droite(y=2*x-1))
On obtient :
le graphe de y=x2 puis une animation de 2 objets (le premier objet est 2 points et un segment et le deuxième une droite)
Attention
Pour définir la séquence d’objets graphiques avec seq on peut quoter
ou ne pas quoter la commande dessinant l’objet graphique.
On peut aussi spécifier le pas de la séquence si on utilise 5 arguments
pour seq : l’objet graphique, le nom du paramètre, sa valeur
minimum, sa valeur maximum et le pas.
On tape :
animation(seq(plotfunc(cos(a*x),x),a,0,10))
On obtient :
La suite des différentes représentations de la courbe définies par y=cos(ax), pour a=0,1,2..10
On tape :
animation(seq(plotfunc(cos(a*x),x),a,0,10,0.5))
ou
animation(seq(plotfunc(cos(a*x),x),a=0..10,0.5))
On obtient :
La suite des différentes représentations de la courbe définies par y=cos(ax), pour a=0,0.5,1,1.5..10
On tape :
animation(seq(plotfunc([cos(a*x),sin(a*x)],x=0..2*pi/a), a,1,10))
On obtient :
La suite des différentes représentations des 2 courbes définies par y=cos(ax) et y=sin(ax), pour a=1..10 et pour x=0..2π/a
On tape :
animation(seq(plotparam([cos(a*t),sin(a*t)], t=0..2*pi),a,1,10))
On obtient :
La suite des différentes représentations des courbes définies paramétriquement par x=cos(at) et y=sin(at), pour a=1..10 et pour t=0..2π
On tape :
animation(seq(plotparam([sin(t),sin(a*t)], t,0,2*pi,tstep=0.01),a,1,10))
On obtient :
La suite des différentes représentations des courbes paramétrées définies par x=sin(t),y=sin(at), pour a=0..10 et t=0..2π
On tape :
animation(seq(plotpolar(1-a*0.01*t^
2, t,0,5*pi,tstep=0.01),a,1,10))
On obtient :
La suite des différentes représentations des courbes polaires définies par ρ=1-a*0.01*t2, pour a=0..10 et t=0..5π
On tape :
plotfield(sin(x*y),[x,y]); animation(seq(plotode(sin(x*y),[x,y],[0,a]),a,-4,4,0.5))
On obtient :
Le champ des tangentes de y’=sin(xy) et la suite des différentes courbes intégrales passant par le point (0;a) pour a=-4,-3.5...3.5,4
On tape :
animation(seq(affichage(carre(0,1+i*a),rempli),a,-5,5))
On obtient :
La suite des différents carrés définis par les points 0 et 1+i*a pour a=-5..5
On tape :
animation(seq(droite([0,0,0],[1,1,a]),a,-5,5))
On obtient :
La suite des différentes droites définies par les points [0,0,0] et [1,1,a] pour a=-5..5
On tape :
animation(seq(plotfunc(x^
2-y^
a,[x,y]), a=1..3))
On obtient :
La suite des différentes représentations 3-d des surfaces définies par x2-ya, pour a=1..3 avec les couleurs de l’arc en ciel
On tape :
animation(seq(plotfunc((x+i*y)^
a,[x,y], affichage=rempli),a=1..10))
On obtient :
La suite des différentes représentations "4D" des surfaces définies par (x+i*y)a, pour a=0..10 avec les couleurs de l’arc en ciel
Remarque
0n peut construire la séquence avec un programme, par exemple on
veut dessiner les segments de longueur 1,√2...√20 construit avec
un triangle rectangle de côtés 1 et le segment précédent.
Voici ce programme (bien mettre c:=evalf(..) pour que les calculs soient
approchés sinon le temps de calcul est trop long) :
essai(n):={
local a,b,c,j,aa,bb,L;
a:=1;
b:=1;
L:=[point(1)];
for(j:=1;j<=n;j++){
L:=append(L,point(a+i*b));
c:=evalf(sqrt(a^2+b^2));
aa:=a;
bb:=b;
a:=aa-bb/c;
b:=bb+aa/c;
}
L;
}
Puis on tape :
animation(essai(20))
On voit, en boucle, chaque point, l’un après l’autre, avec un temps
d’affichage plus ou moins grand selon la valeur de animate de cfg.
Ou on tape :
L:=essai(20); s:=segment(0,L[k])$(k=0..20)
On voit les 21 segments.
Puis on tape :
animation(s)
On voit, en boucle, chaque segment, l’un apres l’autre avec un temps
d’affichage plus ou moins grand selon la valeur de animate de cfg.