Septième Exemple: Courbes de niveau      

Les courbes de niveau constituent un cas particulier de courbes tridimensionnelles. Elles s'expriment sous la forme z=f(x,y); ou bien sous la forme z=f(r,@); . Le plan [x,y] (ou [r,@]) est découpé en un nombre de blocs fixé par la variable XYStep (valeur 30 par défaut) et chaque point obtenu fait l'objet d'un appel au script. Les points sont reliés entre eux par des droites.

Dans ce premier exemple, on voit la représentation d'une partie de plan hyperbolique d'équation:

z=x*y;

A titre indicatif, les bornes étaient toutes fixées à ± 1.6...

On peut se rendre compte de l'effet de la variable XYStep enregardant l'animation ci-contre, ou on a fait varier XYStep de 10 à 100...

XYStep=10;
z=2*sin(x*x+y*y)/(x*x+y*y);

Il est également possible comme dit plus haut d'écrire des équations de la forme z=f(r,@), comme par exemple z=sqrt(r)*sin(@)*cos(r);

Ce tracé filaire peut être complété par un remplissage des quadrilatères. Ceci sera obtebu en appelant la fonction Fill3D(1). Attention, cet appel modifie l'état de SEG. Il faudra appeler Fill3D(0) pour annuler ce remplissage...

Voici par exemple en mode filaire et en mode plein, la fonction: z=sqrt(r)*sin(@)*cos(r);

Pour des raisons purement esthétiques, on peut rajouter un éclairage. Ceci sera obtebu en appelant la fonction Lighting(1). Attention, cet appel modifie l'état de SEG. Il faudra appeler Lighting(0) pour annuler cet éclairage...

 

Voici quelques exemples de la forme précédente, sous différents angles avec différentes couleurs. Evitez les couleurs trop vives qui sont moins sensibles à l'éclairage.

La version 2 de SEG rajoute deux nouveaux type de courbes de niveau. Il s'agit des familles de type:

x=f(u,v);
y=g(u,v);
z=h(u,v);

et
r=f(u,v);
@=g(u,v);
z=h(u,v);

Pour le moment u et v utilise le même espace de définition que t dans la boite de dialogue.

[init]
{
    K=4; g=2;
    Fill3D(1);
    Lighting(1);
}

[Body]
{
    x=-(K+g*cos(v))*cos(u);
    y=(K+g*cos(v))*sin(u);
    z=g*sin(v);
}

[init]
{
    K=4; g=2;
    Fill3D(1);
    Lighting(1);
}

[Body]
{
    r=K+g*cos(v);
    @=-u;
    z=g*sin(v);
}

 

Les Animations