next up previous contents index
suivant: Exercice monter: Les dessins récursifs précédent: Les carrés   Table des matières   Index

Les triangles

On veut réaliser le dessin récursif dont on a mis ci-dessous les premières étapes (profondeur 0,1,2 et 3) :

Image triangles

On peut décider d'avoir le dessin récursif seulement dans l'écran DispG : le programme est plus simple car toutes les instructions graphiques sont exécutées dans cet écran.
On appelle cette procédure triang(a,d,f)a est l'affixe du sommet en bas à gauche du grand triangle, d est la longueur de son côté et f donne la longueur du côté du plus petit triangle. triang(a,d,f) renvoie 1 pour que l'on puisse vérifier que la procédure s'est bien exécutée.
On tape :

triang(a,d,f):={
  si d>=f alors 
    triangle_equilateral(a,a+d);
    triang(a,d/2,f);
    triang(a+d/4+i*d*sqrt(3.)/4,d/2,f);
    triang(a+d/2,d/2,f);
  fsi;
  retourne 1;
}:;
On tape : triang(0,40,2)
L'écran DispG s'ouvre et l'on voit le dessin se faire....On met les différentes instructions graphiques à réaliser dans une liste. On appelle cette procédure triangles(a,d,f)a est l'affixe du sommet en bas à gauche du grand triangle, d est la longueur de son côté et f donne la longueur du côté du plus petit triangle.
On tape :
triangles(a,d,f):={
  local L;
  si d<f alors retourne NULL fsi;
  L:=triangle_equilateral(a,a+d),triangles(a,d/2,f),
     triangles(a+d/4+i*d*sqrt(3.)/4,d/2,f),triangles(a+d/2,d/2,f);
  retourne L;
}
:;
On tape : triangles(0,40,2)

On peut aussi choisir comme paramètre la profondeur n du dessin récursif au lieu de f. On tape :

trianglen(a,d,n):={
local L;
si n<0 alors retourne NULL fsi;
L:=triangle_equilateral(a,a+d),trianglen(a,d/2,n-1),
trianglen(a+d/4+i*d*sqrt(3.)/4,d/2,n-1),trianglen(a+d/2,d/2,n-1);
retourne L;
}
:;
On tape : trianglen(0,40,4)
next up previous contents index
suivant: Exercice monter: Les dessins récursifs précédent: Les carrés   Table des matières   Index
Documentation de giac écrite par Renée De Graeve