suivant: Les polygones réguliers
monter: Récursivité ayant plusieurs appels
précédent: Les triangles
Table des matières
Index
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