suivant: Les hexagones
monter: Récursivité ayant plusieurs appels
précédent: Récursivité ayant plusieurs appels
Table des matières
Index
Ces programmes se trouvent dans examples/recur/triangle.cxx.
On trace un triangle puis on joint les milieux des cotés.
On obtient ainsi 4 petits triangles semblables au précédent.
On recommence le même processus avec les trois triangles qui ont un angle
commun avec le grand triangle et ainsi de suite.....on s'arrête quand les
segments à dessiner deviennent trop petits.
On tape dans un éditeur de programme (que l'on ouvre avec Alt+p),
puis on valide avec OK :
triangle3(A,B,C):={
DispG();
triangle(A,B,C);
if (longueur2(A,B)<0.01) return 0;
triangle3(A,A+(B-A)/2,C+(A-C)/2);
triangle3(A+(B-A)/2,B,B+(C-B)/2);
triangle3(C+(A-C)/2,B+(C-B)/2,C);
};
On tape par exemple :
triangle3(-2.0,1.0,2*i)
Remarque
Le tracé du triangle ne peut se faire qu'a la fin car il suffit de tracer
les derniers petits triangles on écrit donc dans un éditeur de programme
(que l'on ouvre avec Alt+p), puis on valide avec OK :
trianglep(A,B,C):={
DispG();
if (longueur2(A,B)<0.01) {triangle(A,B,C);return 0;}
trianglep(A,A+(B-A)/2,C+(A-C)/2);
trianglep(A+(B-A)/2,B,B+(C-B)/2);
trianglep(C+(A-C)/2,B+(C-B)/2,C);
};
On tape par exemple :
trianglep(-2.0,1.0,2*i)
Généralisation
On trace un triangle ABC, puis le triangle MNP avec :
= a*
,
= a*
,
= a*
,
où a est un nombre réel entre 0 et 1.
triangle3p(A,B,C,a):={
DispG();
if (longueur2(A,B)<0.02) {triangle(A,B,C);return 0;}
triangle3p(A,A+(B-A)*a,C+(A-C)*a,a);
triangle3p(A+(B-A)*a,B,B+(C-B)*a,a);
triangle3p(C+(A-C)*a,B+(C-B)*a,C,a);
};
On tape par exemple :
triangle3p(-2.0,1.0,2*i,0.6)
Et avec un autre test d'arrêt en utilisant la profondeur n du dessin :
triangle3an(A,B,C,a,n):={
DispG();
if (n==0) {triangle(A,B,C);return 0;}
triangle3an(A,A+(B-A)*a,C+(A-C)*a,a,n-1);
triangle3an(A+(B-A)*a,B,B+(C-B)*a,a,n-1);
triangle3an(C+(A-C)*a,B+(C-B)*a,C,a,n-1);
};
On tape par exemple :
triangle3an(-2.0,1.0,2*i,0.6,3)
suivant: Les hexagones
monter: Récursivité ayant plusieurs appels
précédent: Récursivité ayant plusieurs appels
Table des matières
Index
Documentation de giac écrite par Renée De Graeve