next up previous contents index
suivant: La courbe de Hilbert monter: Les courbes de Péano précédent: La courbe de Péano   Table des matières   Index

La courbe de Péano ternaire

Au jour 1, on trace la première courbe peano1(l,0) dans le carré de coté l,
Au jour 2, on trace la deuxème courbe dans le carré de coté l obtenue en partageant le carré en 9 carrés et en traçant dans le premier carré peano1(l,0), et dans les autres soit peano1(l,1), soit peano1(l,-1), de façon à ce que les courbes se raccordent entre elles.
Voici les dessins, où la position de départ et d'arrivée de la tortue est choisie comme indiquée sur la première figure :

\begin{pspicture}(0.0000,0.0000)(14,4)
\psset{unit=0.02cm}
\psset{linewidth=.5pt...
...405.0000}
\psarc(526.9346,157.2361){21.0000}{135.0000}{225.0000}
\end{pspicture}

peano1(l,0) peanot(l,0) peano1(l,1) peano1(l,-1)

//peano1(30,0) ou peano1(30,-1) ou peano1(30,1)
peano1(l,s):={
si (s==-1) alors 
  tourne_droite(45);saute(-l*sqrt(2)/6);rond(round(l*sqrt(2)/6),90);
sinon 
  si (s==1) alors
   tourne_gauche(135);saute(-l*sqrt(2)/6);rond(round(-l*sqrt(2)/6),90);
  sinon
   tourne_gauche(45);
   saute(l*sqrt(2)/6);
  fsi;
fsi;
rond(round(l*sqrt(2)/6),90);
rond(round(-l*sqrt(2)/6),270);
rond(round(l*sqrt(2)/6),270);
rond(round(-l*sqrt(2)/6),90);
saute(l*sqrt(2)/6);
tourne_droite(45);
};

//peanot(90,0)
peanot(l,s):={
  si (l<31) alors 
    peano1(l,s);
  sinon
    si (s==-1) alors 
      peanot(l/3,-1);
    sinon
      si (s==1) alors 
          peanot(l/3,1);
      sinon 
         peanot(l/3,0);
      fsi;
    fsi;
    tourne_droite;peanot(l/3,1);
    tourne_gauche;peanot(l/3,-1);
    tourne_gauche;peanot(l/3,-1);
    tourne_gauche;peanot(l/3,-1);
    tourne_droite;peanot(l/3,1);
    tourne_droite;peanot(l/3,1);
    tourne_droite;peanot(l/3,1);
    tourne_gauche;peanot(l/3,-1);
 fsi;
};
ou bien en supprimant les saute, les tourne et les $ \sqrt{2}$, c'est à dire en prenant comme départ et d'arrivée de la tortue les tangentes aux arcs et comme paramètre l la diagonale du carré et en rajoutant le paramètre n pour la profondeur.
On tape :
//peano2(30,0) ou peano2(30,-1) ou peano2(30,1)
peano2(l,s):={
  si (s==-1) alors 
   rond(round(l/6),90);
  sinon 
    si (s==1) alors
    rond(round(-l/6),90);
    fsi;
  fsi;
  rond(round(l/6),90);
  rond(round(-l/6),270);
  rond(round(l/6),270);
  rond(round(-l/6),90);
};

//tourne_gauche 45;peanot2(90,0,2)
peanot2(l,s,n):={
  si (n==1) alors 
    peano2(l,s);
  sinon
    si (s==-1) alors 
      peanot2(l/3,-1,n-1);
    sinon
      si (s==1) alors 
          peanot2(l/3,1,n-1);
      sinon 
         peanot2(l/3,0,n-1);
      fsi;
    fsi;
    peanot2(l/3,1,n-1);
    peanot2(l/3,-1,n-1);
    peanot2(l/3,-1,n-1);
    peanot2(l/3,-1,n-1);
    peanot2(l/3,1,n-1);
    peanot2(l/3,1,n-1);
    peanot2(l/3,1,n-1);
    peanot2(l/3,-1,n-1);
 fsi;
};
Puis on tape par exemple :
tourne_gauche 45; peanot2(90,0,2)
On remarquera que peanot2 commence à un sommet du carré et se termine en un point proche du sommet opposé : le point d'arrivée est ici fonction de la valeur du paramètre n et est a une distance de l /3n+1 du sommet opposé.
Si on définit :
//peanot1(90,0,2)
peanot1(l,s,n):={
tourne_gauche 45;
saute(l/2/3^n);
peanot2(l,s,n);
saute(l/2/3^n);
tourne_droite 45;
}
On a :
peanot1(l/sqrt(2),s,n) ressemble à peanot(l,s)....mais ce n'est pas parfait à cause des erreurs d'arrondis. Les procédures ci-dessus se trouvent dans le fichier :
examples/tortue/peano.cxx
next up previous contents index
suivant: La courbe de Hilbert monter: Les courbes de Péano précédent: La courbe de Péano   Table des matières   Index
Documentation de giac écrite par Renée De Graeve