Fichier iterate2.mp (figure 1) — Modifié le 2 Mars 2005 à 00 h 32

iterate2.mp (figure 1)
Source

% lsystem ITERATE2.LS -- Thu Feb 13 00:54:56 CET 2003
%% Fichier de paramètres : ITERATE2.LS
% #
%
% ratio   2
% ignore  X
% seed    [X] ++++ [X] ++++ [X]
% rule    X ->  [+ F X] [- F X]
% rule    F -> F F
% leng    256
% delta   30
% x       0
% y       0
% theta   90
% iter    8
% blue    .7
% green   .7
% red     .7
%% FIN du fichier

input tortue;

vardef trace(expr a,b) =
    draw a--b withpen pencircle scaled 1pt
              withcolor (.7,.7,.7);
enddef;

vardef deplace(expr a,b) =
enddef;

vardef F(expr n,m) =
   if m>0:
        F(n,m-1);
        F(n,m-1);
   else:
        avance(n,longueur,trace);
   fi
enddef;

vardef X(expr n,m) =
   if m>0:
        blop(n,n+1);
        tourne(n+1,30);
        F(n+1,m-1);
        X(n+1,m-1);
        blop(n,n+1);
        tourne(n+1,-30);
        F(n+1,m-1);
        X(n+1,m-1);
   fi
enddef;

vardef axiome(expr n,m) =
        blop(n,n+1);
        X(n+1,m);
        tourne(n,30);
        tourne(n,30);
        tourne(n,30);
        tourne(n,30);
        blop(n,n+1);
        X(n+1,m);
        tourne(n,30);
        tourne(n,30);
        tourne(n,30);
        tourne(n,30);
        blop(n,n+1);
        X(n+1,m);
enddef;


beginfig(1);
    longueur = 256 / ( 2 ** 8 );
    tortue(1,0,0,90,1);
    axiome(1,8);
endfig;
end