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

Les triangles

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 :
$ \overrightarrow{AM}$ = a*$ \overrightarrow {AB}$,
$ \overrightarrow{BN}$ = a*$ \overrightarrow {BC}$,
$ \overrightarrow{CO}$ = a*$ \overrightarrow {CD}$,
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)
next up previous contents index
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