### 2.17.3 Εφέ κίνησης μιας ακολουθίας γραφικών αντικειμένων : animation

animation δημιουργεί εφέ κίνησης σε μια ακολουθία γραφικών αντικειμένων με έναν ορισμένο χρόνο εμφάνισης στην οθόνη. Η ακολουθία των αντικειμένων εξαρτάται τις πιο πολλές φορές από μία παραμέτρου και ορίζεται χρησιμοποιώντας την εντολή seq αλλά δεν είναι υποχρεωτικό.
animation παίρνει σαν όρισμα την ακολουθία γραφικών αντικειμένων.
Για να ορίσουμε μια ακολουθία γραφικών αντικειμένων με seq, εισάγουμε τον ορισμό του γραφικού αντικειμένου (που εξαρτάται από την παράμετρο), το όνομα της παραμέτρου, την ελάχιστη τιμή της, την μέγιστη τιμή της και προαιρετικά μια τιμή βήματος.
Είσοδος :

animation(seq(plotfunc(cos(a*x),x),a,0,10))

Έξοδος :

Η ακολουθία των καμπύλων που ορίζονται από την y=cos(ax),
για a=0,1,2,…,10

Είσοδος:

animation(seq(plotfunc(cos(a*x),x),a,0,10,0.5))

ή

animation(seq(plotfunc(cos(a*x),x),a=0..10,0.5))

Έξοδος :

Η ακολουθία των καμπύλων που ορίζονται από την y=cos(ax),
για a=0,0.5,1,1.5,…,10

Είσοδος :

animation(seq(plotfunc([cos(a*x),sin(a*x)],x=0..2*pi/a), a,1,10))

Έξοδος :

Η ακολουθία των δύο καμπύλων που ορίζονται από την y=cos(ax) και την y=sin(ax), για a=1..10 και για x=0..2π/a

Είσοδος :

animation(seq(plotparam([cos(a*t),sin(a*t)], t=0..2*pi),a,1,10))

Έξοδος :

Η ακολουθία των παραμετρικών καμπύλων που ορίζονται από την x=cos(at) και την y=sin(at), για a=1..10 και για t=0..2π

Είσοδος :

animation(seq(plotparam([sin(t),sin(a*t)], t,0,2*pi,tstep=0.01),a,1,10))

Έξοδος :

Η ακολουθία των παραμετρικών καμπύλων που ορίζονται από τις x=sin(t),y=sin(at), για a=0..10 και t=0..2π

Είσοδος :

animation(seq(plotpolar(1-a*0.01*t`^`2, t,0,5*pi,tstep=0.01),a,1,10))

Έξοδος :

Η ακολουθλια των πολικών καμπύλων που ορίζονται από την ρ=1−a*0.01*t2, για a=0..10 και t=0..5π

Είσοδος :

plotfield(sin(x*y),[x,y]); animation(seq(plotode(sin(x*y),[x,y],[0,a]),a,-4,4,0.5))

Έξοδος :

Το πεδίο κλίσεων της y′=sin(xy) και η ακολουθία των ολοκληρωτικών καμπύλων που περνάνε από τα σημεία (0,a) για a=-4,-3.5,…,3.5,4

Είσοδος :

animation(seq(display(square(0,1+i*a),filled),a,-5,5))

Έξοδος :

Η ακολουθία των τετραγώνων που ορίζονται από τα σημεία 0 και 1+i*a για a=−5..5

Είσοδος :

animation(seq(line([0,0,0],[1,1,a]),a,-5,5))

Έξοδος :

Η ακολουθία των γραμμών που ορίζονται από τα σημεία [0,0,0] και [1,1,a] για a=−5..5

Είσοδος :

animation(seq(plotfunc(x`^`2-y`^`a,[x,y]),a=1..3))

Έξοδος :

Η ακολουθία των "3D" επιφανειών που ορίζονται από την x2−ya, για a=1..3

Είσοδος :

animation(seq(plotfunc((x+i*y)`^`a,[x,y], display=filled),a=1..10)

Έξοδος :

Η ακολουθία των "4D" επιφανειών που ορίζονται από την (x+i*y)a, για a=0..10 με τα χρώματα του ουράνιου τόξου

Σχόλιο Μπορούμε επίσης να ορίσουμε την ακολουθία των αντικειμένων με ένα προγραμμα. Για παράδειγμα, αν θέλουμε να σχεδιάσουμε τα ευθύγραμμα τμήματα μήκους 1,√2,…,√20 που κατασκευάζονται με ένα ορθογώνιο τρίγωνο πλευράς 1 και το προηγούμενο τμήμα γράφουμε το ακόλουθο πρόγραμμα (σημειώστε ότι υπάρχει η εντολή c:=evalf(..) για να εξαναγκάσει προσεγγιστικούς υπολογισμούς, αλλιώς ο χρόνος υπολογισμού θα ήταν πολύ μεγάλος):

     seg(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;}:;

Έπειτα εισάγετε :

animation(seg(20))

Βλέπουμε, κάθε σημείο, ένα προς ένα.
ή :

L:=seg(20); s:=segment(0,L[k])$(k=0..20)

Βλέπουμε 21 τμήματα. Έπειτα, εισάγετε:

animation(s)

Βλέπουμε, κάθε ευθύγραμμο τμήμα, ένα προς ένα.