next up previous contents index
suivant: Les polygones réguliers monter: Récursivité ayant plusieurs appels précédent: Les triangles   Table des matières   Index

Les hexagones

Ces programmes se trouvent dans examples/recur/polygone.cxx.
On considère un hexagone de coés de longueur l, on remplace cet hexagone par 7 hexagones de cotés de longueur l /3 qui sont :les 6 hexagones ayant un angle commun avec l'hexagone de départ et un septième hexagone se trouvant au centre.
On obtient ainsi 7 petits hexagones semblables au précédent et on recommence le même processus.
On tape la fonction hexagone :
 
// dessin d'un hexagone
hexagone(x,y):={
local a,b,c;
DispG();
a:=x;
b:=y;
for (j:=1;j<=6;j++) {
c:=a+(b-a)*exp(evalf(i*pi*2/3));
segment(a,c);
b:=a;
a:=c;
}
};
puis on fait un premier appel récursif correspondant à l'hexagone du centre et avec la même itération que dans la fonction hexagone, on fait un appel récursif au lieu de tracer un segment pour les hexagones des angles, on tape :
hexagones(x,y,n):={
local a,b,c;
a:=x;
b:=y;
DispG();
if (n==0) {hexagone(a,b);return 0;}
c:=a+(b-a)*2/3*exp(evalf(i*pi/3))
// dessin de l'hexagone central
hexagones(c,c+(b-a)/3, n-1);
//dessin des 6 hexagones dans les angles
for (j:=1;j<=6;j++) {
c:=a+(b-a)*exp(evalf(i*pi*2/3));
hexagones(c,c+(a-c)/3,n-1);
b:=a;
a:=c;
} 
};


Documentation de giac écrite par Renée De Graeve