Stochastic Plant
No livro “The Algorithmic Beauty of Plants”, de Przemyslaw Prusinkiewicz e Aristid Lindenmayer, mostra-se que a estrutura de uma árvore pode ser representada por meio dos chamados Context-Free Lindenmayer Systems, ou simplesmente Sistemas-OL.
Os L-systems permitem a definição de formas complexas através do uso de iteração. Eles usam uma linguagem matemática na qual uma cadeia inicial de caracteres é comparada com regras que são avaliadas repetidamente, e os resultados são usados para gerar geometria. O resultado de cada avaliação se torna a base para a próxima iteração da geometria, dando a ilusão de crescimento.
A Rose leaf é uma forma de escrever L-systems para demonstrar e experimentar as diferentes possibilidades de se gerar uma folha de rosa.
\[\]
# Código L-systems indentado:
lsystem RoseLeaf extends Branches {
set symbols axiom = [ < A(0,0) . > ] [ < A(0,1) . > ];
set iterations = 25;
set initialAngle = 60;
let LA = 5; // initial length - main segment
let RA = 1.15; // growth rate - main segment
let LB = 1.3; // initial length - lateral segment
let RB = 1.25; // growth rate - lateral segment
let LC = 3; // initial length - marginal notch
let RC = 1.19; // growth rate - marginal notch
interpret G(x) as DrawForward(x*0.8, 2);
interpret + as TurnLeft(60);
interpret - as TurnLeft(-60);
interpret < as StartPolygon(#007700, 2);
interpret . as RecordPolygonVertex;
interpret > as EndPolygon;
rewrite A(t,d) where d == 0
to . G(LA,RA,-1) . [ + B(t) G(LC,RC,t) . > ]
[ + B(t) < . ] A(t+1,d);
rewrite A(t,d) where d == 1
to . G(LA,RA,-1) . [ - B(t) G(LC,RC,t) . > ]
[ - B(t) < . ] A(t+1,d);
rewrite B(t) where t > 0
to G(LB,RB,-1) B(t-1);
rewrite G(s,r,t) where t > 1
to G(s*r,r,t-1);
rewrite G(s,r,t) where t == -1
to G(s*r,r,-1);
}
Figura replicada do código acima rodado no Processador L-systems.
