On remarque que le segment AC et le segment CB donne naissance à deux
dragons symétriques : on appelle dragong le dragon obtenu par des
pliages fait avec une rotation d'angle + *2 et dragond le dragon
obtenu par des pliages fait avec une rotation d'angle -
*2.
On tape :
//dragong(1800) dragong(l):={ si (l<10) alors avance(l); sinon dragong(l/2); tourne_gauche(90); dragond(l/2); fsi; }; dragond(l):={ si (l<10) alors avance(l); sinon dragong(l/2); tourne_droite(90); dragond(l/2); fsi; }Ou encore en utilisant une seule procédure dragon2 mais avec un paramètre supplémentaire s (si s=1 on a un dragon gauche et si s=-1 on a un dragon droit).
//dragon2(1800,1) dragon2(l,s):={ si (l<10) alors avance(l); sinon dragon2(l/2,1); tourne_gauche(90*s); dragon2(l/2,-1); fsi; }
On tape par exemple :
efface();pas_de_cote(-20);dragon2(2880,1)
Ou encore on écrit dragon3 en utilisant le paramètre n profondeur pour faire le test d'arrêt :
//dragon3(1800,1,3) dragon3(l,s,n):={ si (n==0) alors avance(l); sinon dragon3(l/2,1,n-1); tourne_gauche(90*s); dragon3(l/2,-1,n-1); fsi; }Les dessins des 5 premières étapes ont été réalisés en exécutant :