Apprentissage de la programmation en P_LOGO
Partez pour la 3ème dimension.

 

 

Retour au sommaire

Vous allez voir, la 3D avec Logo, c'est magique. Rien à voir avec un autre langage de programmation graphique.

Les déplacements relatifs de la tortue dans la 3ème dimension se font également par les primitives AV et RE. C’est l’orientation de la tortue qui va être plus compliquée. Nous avons à notre disposition PIQUE, CABRE, ID (Incline sur la Droite) et IG (Incline sur la Gauche). Malheureusement pour nous, la tortue ne figure pas ces orientations un peu particulières.

PIQUE <nombre de degrés> fait baisser la tête de la tortue du nombre de degrés indiqué par le paramètre. CABRE <nombre de degrés> fait le travail inverse.

Avec ces deux nouvelles primitives, on peut dessiner un CUBE :

POUR CUBE

LC FPOS [-160 -40] BC

REPETE 4 [CUBE1 AV 100 TD 90]

FIN

POUR CUBE1

PIQUE 90

AV 100 CABRE 90 AV 100

RE 100 PIQUE 90 RE 100

CABRE 90

FIN

CUBE

ID <nombre de degrés> et IG <nombre de degrés>, c’est un peu plus compliqué à expliquer. La tortue tourne autour de son axe sur la droite ou la gauche, elle se penche sur un des côtés d’un certain nombre de degrés. IG ou ID ne change pas le cap de la tortue. Les effets ne s’en ressentent qu’aux déplacements suivants des TD ou TG. En voici une petite démonstration pour dessiner les pages d’un livre entrouvert.

POUR CARRE

REPETE 4 [AV 100 TD 90]

FIN

POUR LIVRE

VE LC TG 90 FPOS [-150 -30] ID 10 BC

REPETE 10 [IG 5 CARRE]

FIN

LIVRE

Pour compléter ces primitives de déplacement dans la 3D, il faut signaler FPOS3D et POS3D qui sont les équivalentes de FPOS et POS en deux dimensions. La liste en argument ou rendue contient trois nombres qui sont les coordonnées dans l’espace [horizontal vertical profondeur].

Certaines primitives-opérations ne sont plus valides dès qu’on utilise la 3D. C’est notamment le cas de CAP, DISTANCE et VERS. Il faudrait créer des procédures DISTANCE3D et VERS3D. A vos claviers… Pour CAP3D, c’est plus compliqué.

Il reste que l’écran est toujours plat. Pour figurer l’effet de la profondeur, LOGO utilise la représentation en perspective. On peut agir sur les paramètres de cette représentation par les primitives FOEIL et FVISEE.

FOEIL <nombre de pas> permet de régler la distance entre l’observateur et l’écran. La représentation sera plus ou moins écrasée suivant cette distance. On peut connaître la distance courante par l’usage de la primitive-opération OEIL.

FVISEE <liste de deux coordonnées> sert à définir le point de l’écran que regarde l’observateur. Le paramètre est une liste de deux nombres représentants les coordonnées (2D) de ce point. Aux effets produits, j’ai l’impression qu’on définit par-là ce qu’on appelle en dessin le point de fuite. La primitive-opération VISEE permet de connaître le point d’observation courant.

Voici un petit programme de démonstration des dessins en trois dimensions. Il s’agit de la représentation d’un cube. Au centre d’une des faces, une croix est dessinée. La position de la souris détermine le point de fuite. Les touches + et - éloignent ou rapprochent l’œil de l’observateur. Les touches 2, 4, 6 et 8 modifient les caps de la tortue au début du dessin du cube. Le bouton droit de la souris stoppe le programme.

Les procédures CUBE et CUBE1 dessinent le cube et la croix, toujours à la même place sur l’écran.

POUR CUBE

; positionnement de la tortue à l’angle avant-bas-gauche du cube.

LC FPOS [-60 -40] BC

REPETE 4 [CUBE1 AV 100 TD 90]

; dessin de la croix sur la face avant.

LC TD 45 AV 72 BC

AV 5 RE 10 AV 5 TD 90 AV 5 RE 10 AV 5 TG 90

FIN

POUR CUBE1

PIQUE 90

AV 100 CABRE 90 AV 100

RE 100 PIQUE 90 RE 100

CABRE 90

FIN

POUR DEPART

DONNE "A 0 ; cap de départ de la tortue sur le plan 2D habituel

DONNE "P 0 ; cap de départ de la tortue dans la troisième dimension.

DONNE "D 200 ; distance de l’observateur.

EC [SOURIS - + 4 6 8 2]

VE FEN CT

PROF VE CT TD :A PIQUE :P CUBE

SOURIS

FIN

La procédure SOURIS est récursive. C’est la boucle principale du programme. Si un événement souris ou clavier arrive, le cube est redessiné. Sinon, on ne fait rien.

POUR SOURIS

SI TOUCHEè [PROF VE CT TD :A PIQUE :P CUBE]

SI BOUTONè 1 [STOP]

SI SOURISè [SOIT "RIEN LISSOURIS FVISEE POSSOURIS VE CT TD :A PIQUE :P CUBE]

SOURIS

FIN

La procédure PROF modifie la valeur des variables en fonction de la touche enfoncée par l’utilisateur et redéfinit la distance de l’observateur.

POUR PROF

SOIT "T LISCAR

SI EGALè :T "- [DONNE "D DIFF :D 20]

SI EGALè :T "+ [DONNE "D SOMME :D 20]

SI EGALè :T "8 [DONNE "A SOMME :A 5]

SI EGALè :T "2 [DONNE "A DIFF :A 5]

SI EGALè :T "4 [DONNE "P DIFF :P 5]

SI EGALè :T "6 [DONNE "P SOMME :P 5]

SI PLPè :D 1 [DONNE "D 1]

FOEIL :D

FIN

De quoi épater les programmeurs en d’autres langages, qui doivent, pour réaliser ce genre de programme, un nombre de ligne de long plus conséquent que le programme présenté.

Les petits futés roboticiens ne tarderont pas à trouver une application à ces dessins en 3D : la simulation de mécanismes. Si c’est le cas, ils seraient bien aimables d’envoyer leurs œuvres au secteur robotique pour en faire une collection.

Que c'est beau, le LOGO !


Webmaster : Sinclair ( philippe.lucidarme@wanadoo.fr ) dernière mise à jour : 1 aout1999.