//tourne_gauche;saute(-80);arbre7(60,5) arbre7(h,p):={ avance(h); si (p>=2) alors tourne_droite(90*(p-1)/p); repete(p,arbre7(h/2,p-1),tourne_gauche(180/p)); tourne_droite(90*(p+1)/p); fsi; recule(h); }Puis on tape :
efface(); tourne_gauche ; saute(-80); arbre7(60,5);
En utilisant aussi la profondeur dans le test d'arrêt on tape :
//tourne_gauche;saute(-80);arbre8(90,5,3) arbre8(h,p,n):={ avance(h); si (p>=2 et n>=1) alors tourne_droite(90*(p-1)/p); repete(p,arbre8(h/2,p-1,n-1),tourne_gauche(180/p)); tourne_droite(90*(p+1)/p); fsi; recule(h); }Puis on tape :
efface(); tourne_gauche ; saute(-80); arbre8(60,5,3);On obtient :
Les 8 procédures ci-dessus se trouvent dans le fichier :
examples/tortue/arbre.cxx.
Exercice
Refaire les exemples précédents mais en ne dessinant que la frondaison de
l'arbre, c'est à dire l'arbre sans son tronc.
Une réponse
Voici la réponse correspondant à arbre7 et à arbre8. Bien
sûr, pour avoir la frondaison de arbre7(60,5) il faut taper
arbre9(30,5) et pour avoir la frondaison de arbre8(60,5,3) il faut
taper arbre10(30,5,3).
//tourne_gauche;saute(-80);arbre9(90,5,3) arbre9(h,p):={ si (p>=2) alors tourne_droite(90*(p-1)/p); repete(p,avance(h),arbre9(h/2,p-1),recule(h),tourne_gauche(180/p)); tourne_droite(90*(p+1)/p); fsi; }
//tourne_gauche;saute(-80);arbre10(90,5,3) arbre10(h,p,n):={ si (n>=1 et p>=2) alors tourne_droite(90*(p-1)/p); repete(p,avance(h),arbre10(h/2,p-1,n-1),recule(h),tourne_gauche(180/p)); tourne_droite(90*(p+1)/p); fsi; }