next up previous contents index
suivant: Index monter: Le dragon précédent: Le dragon   Table des matières   Index

La courbe de Gosper

Voici deux étapes et le début de l'étape 3 de la courbe de Gosper :


On remarque que les 7 segments de la première courbe donne naissance soit à la première courbe, soit à la courbe obtenue en faisant le trajet en sens inverse. On va donc définir deux procédures :
gosperg et gosperd qui réalisent les dessins suivants (avec comme position de départ de la tortue, le triangle plein et comme position d'arrivée, le triangle vide) :


On déduit l'écriture de gosperd de celle de gosperg en mettant les instructions de gosperg de la dernière à la première en changeant gauche en droite et réciproqement.

//gosperg(80,3)
gosperg(l,n):={
  si (n==0) alors avance(l);
sinon
  gosperg(l/2,n-1);
  tourne_gauche(60);
  gosperd(l/2,n-1);
  tourne_gauche(120);
  gosperd(l/2,n-1);
  tourne_droite(60);
  gosperg(l/2,n-1);
  tourne_droite(120);
  gosperg(l/2,n-1);
  gosperg(l/2,n-1);
  tourne_droite(60);
  gosperd(l/2,n-1);
  tourne_gauche(60);
fsi;
};
gosperd(l,n):={
  si (n==0) alors avance(l);
sinon
  tourne_droite(60);
  gosperg(l/2,n-1);
  tourne_gauche(60);
  gosperd(l/2,n-1);
  gosperd(l/2,n-1);
  tourne_gauche(120);
  gosperd(l/2,n-1);
  tourne_gauche(60);
  gosperg(l/2,n-1);
  tourne_droite(120);
  gosperg(l/2,n-1);
  tourne_droite(60);
  gosperd(l/2,n-1);
fsi;
};
On tape :
gosperg(80,3)
On obtient :
la courbe de gosper à la troisième génération

Autre écriture on choisit les flèches départ et d'arrivée comme ci-dessous mais alors la tortue a changé de direction il faut donc aussi la faire changer de la même direction dans le test d'arrêt. L'écriture de gosperd se fait encore à partir de celle de gosperg, en mettant les instructions de gosperg de la dernière à la première en changeant gauche en droite et réciproqement, et cela même dans le test d'arrêt!!!



//gosperg2(80,3)
gosperg2(l,n):={
  si (n==0) alors avance(l);tourne_droite(60);
sinon
  gosperg2(l/2,n-1);
  tourne_gauche(60);
  gosperd2(l/2,n-1);
  tourne_gauche(60);
  gosperd2(l/2,n-1);
  tourne_droite(60);
  gosperg2(l/2,n-1);
  tourne_droite(60);
  gosperg2(l/2,n-1);
  tourne_gauche(60);
  gosperg2(l/2,n-1);
  tourne_droite(60);
  gosperd2(l/2,n-1);
fsi;
};
gosperd2(l,n):={
  si (n==0) alors tourne_gauche(60);avance(l);
sinon
  gosperg2(l/2,n-1);
  tourne_gauche(60);
  gosperd2(l/2,n-1);
  tourne_droite(60);
  gosperd2(l/2,n-1);
  tourne_gauche(60);
  gosperd2(l/2,n-1);
  tourne_gauche(60);
  gosperg2(l/2,n-1);
  tourne_droite(60);
  gosperg2(l/2,n-1);
  tourne_droite(60);
  gosperd2(l/2,n-1);
fsi;
};
On tape :
gosperg2(80,3)
On obtient :
la courbe de gosper à la troisième génération

Les procédures ci-dessus se trouvent dans le fichier :
examples/tortue/gosper.cxx


next up previous contents index
suivant: Index monter: Le dragon précédent: Le dragon   Table des matières   Index
Documentation de giac écrite par Renée De Graeve