Manipulations du repère courant

Le squelette de ce TP est dans o_ex_arbre.c. Il contient une fonction récursive d'affichage que vous devez terminer.

Remarques :

L'arbre sera paramétré par sa profondeur de récursion :

Si vous trouver ceci trop simple : ajouter des paramètres supplémentaires afin de choisir les différentes valeurs aléatoirement. (Voir les fonctions C rand et srand)

Dans la figure suivante (2D) l'angle ``torsion'' est nul, s'il n'est pas nul, alors la figure devient une figure 3D. De plus, il y a deux branches (X=2) au bout de chaque tronc. Et la profondeur de récursion est de neuf (N=9). Il n'y a pas de feuille.

Un arbre

L'image précédente à été faite par le programme PostScript suivant :

/tronc {
  newpath
  -5 0   moveto
  -5 100 lineto
   5 100 lineto
   5 0   lineto
   0 0   lineto
  closepath
  stroke
} def     % Définition de la fonction affichant le tronc

/arbre
{
  dup					% Sauvegarde la profondeur
  0 ne					% Test si fin de récursion
  {
    1 sub				% Calcule la nouvelle profondeur
    dup					% Duplique, car 2 appels récursif
    tronc				% Affiche le tronc
    gsave  0 100 translate  20 rotate .5 .5 scale arbre grestore
    gsave  0 100 translate -40 rotate .7 .7 scale arbre grestore
  }
  {
    pop					% Enlève le haut de pile
  }
  ifelse
} def    % La fonction récursive prend un argument dans la pile (profondeur)

200 0 translate
2 2 scale
11 arbre

Thierry EXCOFFIER
Last modified: Wed Aug 30 14:14:43 CEST 2000