LOGO
                  et
     la troisième dimension.

 

Il existe dans la récente version de Logoplus, une série de primitives qui sont capables de dessiner en trois dimensions car elles invoquent en argument un paramètre qui inclut la profondeur d'écran. Cette dimension se situe derrière l'écran lorsqu'on prend l'utilisateur pour point de repère. Elle ne lui est donc pas matériellement accessible. Ces primitives sont ZMAX, ZMAX?, ZPOINT, ZPOINT? et ZSEGMENT. Elles figurent toutes dans le catalogue des primitives. Pour bien comprendre comment fonctionnent ces primitives, il faut d'abord faire la différence entre un point situé sur l'écran de l'ordinateur (qui a donc une profondeur d'écran nulle) et ce même point, qui va être projeté en arrière de l'écran, et qui lui, verra ses dimensions (donc ses coordonnées) diminuer selon la valeur de cette profondeur. 

Cette projection se traduit, en terme de perspective, par un point de fuite, dont on peut fixer la valeur sous Logoplus, grâce à la primitive ZMAX.

Exemple: ZMAX 150

Cette valeur ne doit pas être trop importante car plus grande elle sera, plus un tracé mettra de temps à "s'éloigner". Un intervalle entre 100 et 200 paraît "raisonnable".
Trop proche, l'effet de perspective ne sera pas assez marqué.

Les deux croquis qui figurent en-dessous représentent assez bien la situation.

                       

 
On se propose en exemple d'écrire une procédure qui fera virevolter un carré dans les trois dimensions.
Ce carré aura pour côté 100 unités. Il sera initialement placé à une profondeur de 100 unités (assez proche du point de fuite situé à 150 unités).
 
Cela se traduit en LOGO par:
 
ZMAX 150 DONNE "prof 100
On fixe ensuite les angles de rotation à 0:
DONNE "théta 0 /* rotation du carré dans le plan de l'écran. */
DONNE "phi 0  /* rotation du carré dans le plan perpendiculaire à l'écran (plan YOZ) . */
 
La distance de chaque sommet du carré est une racine carrée, 
fonction du côté du carré:
 
DONNE "module PUISSANCE (( PUISSANCE 50 2 ) + ( PUISSANCE 50 2 ) ) 0,5
 
Les angles de chaque sommet se trouvent relativement à 45°, 135°, 225° et 315°.
 
On peut alors définir la liste des coordonnées angulaires de chaque sommet:
 
DONNE "listecoords [[ :module 45 ] [:module 135 ] [:module 225 ] [ :module 315 ]]
 
Cette liste permet de construire la liste des coordonnées rectangulaires des sommets du carré en fonction des angles de rotation théta et phi:
 
REPETE 100 [
DONNE "lx [] DONNE "ly []
REPETE CARD :listecoords [
DONNE "lx PH :lx ( SAISIS :listecoords PH BOUCLE 1 ) * COS (( SAISIS :listecoords PH BOUCLE 2 ) + :théta )
DONNE "ly PH :ly (( SAISIS :listecoords PH BOUCLE 1 ) * SIN (( SAISIS :listecoords PH BOUCLE 2 ) + :théta )) * SIN :phi
]

Il ne reste plus qu'à tracer les segments en tenant compte de la profondeur:

ZSEGMENT [ ITEM :lx 1 ITEM :ly 1 :prof ] [ITEM :lx 2 ITEM :ly 2 :prof ]
ZSEGMENT [ITEM :lx 2 ITEM :ly 2 :prof ] [ ITEM :lx 3 ITEM :ly 3 :prof ]
ZSEGMENT [ ITEM :lx 3 ITEM :ly 3 :prof ] [ ITEM :lx 4 ITEM :ly 4 :prof ]
ZSEGMENT [ ITEM :lx 4 ITEM :ly 4 :prof ] [ ITEM :lx 1 ITEM :ly 1 :prof ]
 
En affichant et en effaçant régulièrement le tracé du carré, on obtient une succession d'images qui montrent un carré flottant dans l'espace. Il suffit alors de modifier la profondeur et/ou les angles de rotation.

Remarque: les primitives évoquées dans cette page ne font pas appel à la tortue. Elle peut donc être mise en mode invisible. Seule sa couleur (FCC) fixe la couleur du tracé en trois dimensions.

Cliquer ici pour télécharger la procédure >>

Haut de page >>

Retourner à la page d'accueil >> 
 
Um zur deutschen Seite zu gehen >>