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

Les triangles

Ces programmes se trouvent dans examples/recur/triangle.cxx.
On trace un triangle puis le triangle qui joint les milieux des cotés etc...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 :
 
triangles(A,B,C):={
DispG();
triangle(A,B,C);
if (longueur2(A,B)>0.01) {
   triangles(A+(B-A)/2,B+(C-B)/2,C+(A-C)/2);
}
};
On tape :
triangles(-2.0,1,2*i)
On obtient le dessin des triangles du plus grand au plus petit :le dessin du triangle (-2,1,2*i) puis du triangle (-0.5,0.5+i,-1+i,)....

Remarque si on tape

 
trianglesp(A,B,C):={
DispG();
if (longueur2(A,B)>0.01) {
  trianglesp(A+(B-A)/2,B+(C-B)/2,C+(A-C)/2);
}
triangle(A,B,C);
};
On tape :
trianglesp(-2.0,1,2*i)
le dessin des triangles ne se fera pas dans le même ordre et se fera du plus petit au plus grand.

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.

 
trianglep(A,B,C,a):={
DispG();
triangle(A,B,C);
if (longueur2(A,B)>0.01) {
trianglep(A+(B-A)*a,B+(C-B)*a,C+(A-C)*a,a);
}
};
On tape par exemple :
trianglep(-2.0,1.0,2*i,0.2)



Documentation de giac écrite par Renée De Graeve