Huitième Exemple: Les animations

[init]
{
    SetTimer(50);
}
[Body]
{
    y=sin(x+A);
}
[Timer]
{
    A+=PI/20;
}

Ci-dessus, un exemple de courbe comportant une animation...

Grâce à l'appel de fonction SetTimer(50), toutes les 50 millisecondes, le moteur de script de SEG lancera la section [Timer] de votre script. Le timer peut-être arrété avec la fonction KillTimer();

Lors de l'affichage de la courbe, les timers ne sont pas lancés effectivement.

Ils ne le seront qu'à l'appui sur ou par la séquence Shift-Escape. De la même manière l'animation sera suspendu par les mêmes moyens ou par l'appui pendant un temps pouvant atteindre 250 millisecondes sur la touche Escape.

Grâce à ces particularités, vous pourrez créer facilement des scripts comme:

[init]
{
    SetTimer(100);
    Lighting(1);
    fill3D(1);
}
[Body]
{
    z=2*sin(r+c)*exp(-r/10);
}
[Timer]
{
    c+=0.1;
    SetColor((cos(c)+1)*127, (cos(c+2*PI/3)+1)*127, (cos(c+4*PI/3)+1)*127);
}

De nombreuses fonctions ont été crées pour être utilisées principalement dans les scripts d'animation....

Nom Rôle Particularités
Fill3d(Bool) Remplissage en 3D Est mémorisé. Doit être remis à 0. Utile seulement pour les courbes de niveau
Lighting(Bool) Eclairage en 3D Est mémorisé. Doit être remis à 0. Utile seulement pour les courbes de niveau
WireFrame(Bool) WireFrame en 3D Est mémorisé. Doit être remis à 1. Utile seulement pour les courbes de niveau
Translate(X,Y,Z) Translation de la scène
Rotate(Xr,Yr,Zr) Rotation de la scène Angles en radians.
Redraw() Force le retracé de l'écran Peut-être utilisé en 2D comme en 3D. Très utile pour les animations.
Clear(Bool) Efface l'écran entre 2 frames Peut-être utilisé en 2D comme en 3D.
SetColor(R,G,B) Fixe la couleur de tracé R(ed) G(reen) et B(lue) valent entre 0 et 255.
SetRGB(R,G,B) Fixe la couleur de tracé R(ed) G(reen) et B(lue) valent entre 0 et 255. comme SetColor
SetRGBA(R,G,B,A) Fixe la couleur de tracé et alpha R(ed) G(reen) et B(lue) A(lpha) valent entre 0 et 255. Alpha est la transparence...
SnapShot(Name,N) Prend une image BMP de la scène Le nom du fichier est NameN.BMP. N, numérique peut évoluer...
SetTimer(X) Fixe la valeur en ms du timer Une fois les timers lancés, appelle la section timer à chaque frame, avant de relancer le tracé.
KillTimer( ) Arrète le timer

Je ne résiste pas à l'envie de vous donner un second et magnifique exemple...

[Camera]
{
    Rotate(cos(c), sin(c), 0);    Translate(cos(c/4), sin(c), 20*cos(c)-50);
}
[init]
{
        SetTimer(10);
        XYStep=30;
        Fill3D(1);        Lighting(1);
        exec [Camera];
}
[Body]
{
    z=sin(x*x+y*y)/(x*x+y*y);
}
[Timer]
{
    c+=0.01;
    SetColor((cos(c)+1)*127, (cos(c+2*PI/3)+1)*127, (cos(c+4*PI/3)+1)*127);
    exec [Camera];
}

 

 

Les fractales