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 :

\begin{pspicture}(0.0000,0.0000)(14,7)
\psset{unit=0.0173cm}
\psset{linewidth=.5...
...460.0000,128.8846)
\psline(460.0000,128.8846)(450.0000,128.8846)
\end{pspicture}

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) :

\begin{pspicture}(0.0000,0.0000)(14,4)
\psset{unit=0.0173cm}
\psset{linewidth=.5...
...395.0000,134.6410)
\psline(380.0000,139.6410)(395.0000,134.6410)
\end{pspicture}

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!!!


\begin{pspicture}(0.0000,0.0000)(14,4)
\psset{unit=0.02cm}
\psset{linewidth=.5pt...
...295.0000,117.3205)
\psline(280.0000,122.3205)(295.0000,117.3205)
\end{pspicture}

//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