Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como replicar uma Sunflower core usando os conhecidos L-Systems (Lindenmayer-Systems)?

0 votos
24 visitas
perguntada Jul 6 em Ciência da Computação por Edmar Rocha Pereira (21 pontos)  
reclassificado Jul 6 por Edmar Rocha Pereira

Figura 4.2 do livro The Algorithmic Beauty of Plants - Przemyslaw Prusinkiewicz and Aristid Lindenmayer (1991) [PL1991].

A imagem será apresentada aqui.

Compartilhe

1 Resposta

0 votos
respondida Jul 6 por Edmar Rocha Pereira (21 pontos)  
editado Jul 6 por Edmar Rocha Pereira

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.
Para descrever o padrão das florzinhas ou sementes de uma cabeça de girassol, Vogel propôs a fórmula:

φ = n∗137.5◦, r = c√n,

Onde:

--> n é o número de encomenda de uma florzinha do girassol, contando a partir do exterior para o centro. Este é o reverso da idade da flor em uma planta real.

--> φ é o ângulo entre uma direção de referência e o vector de posição da enésima florzinha em um sistema de coordenadas polares originado no centro do capitulo. Segue-se que o ângulo de divergência entre os vetores de posição de quaisquer duas florzinhas sucessivas é constante, α = 137,5◦.

--> r é a distância entre o centro do capítulo e o centro da enésima florada, dado um parâmetro de escala constante c.

O ângulo de divergência de 137,5◦ é muito mais difícil de explicar. Vogel deriva usando duas suposições. Cada florete novo é emitido em um ângulo fixo α em relação ao florete anterior. O vetor de posição de cada nova florzinha se encaixa na maior lacuna existente entre os vetores de posição das florzinhas mais velhas.
\[\]

# Código L-systems indentado:

lsystem SunflowerCore {

  set symbols axiom = A(0);

  set iterations = 700;
  set continuousColoring = {#cccc00, 254, #007700};

  interpret f as MoveForward;
  interpret X as DrawCircle(10);
  interpret + as TurnLeft(137.3);

  rewrite A(n) to + f(n^0.5*25)X A(n+1);
}

process all with SvgRenderer;

Figura replicada do código acima rodado no Processador L-systems.

A imagem será apresentada aqui.
\[\]

# Código L-systems indentado:

lsystem SunflowerCore {

  set symbols axiom = A(0);

  set iterations = 700;
  set continuousColoring = {#cccc00, 254, #007700};

  interpret f as MoveForward;
  interpret X as DrawCircle(10);
  interpret + as TurnLeft(137.5);

  rewrite A(n) to + f(n^0.5*25)X A(n+1);
}

process all with SvgRenderer;

Figura replicada do código acima rodado no Processador L-systems.

A imagem será apresentada aqui.

\[\]

# Código L-systems indentado:

lsystem SunflowerCore {

  set symbols axiom = A(0);

  set iterations = 700;
  set continuousColoring = {#cccc00, 254, #007700};

  interpret f as MoveForward;
  interpret X as DrawCircle(10);
  interpret + as TurnLeft(137.6);

  rewrite A(n) to + f(n^0.5*25)X A(n+1);
}

process all with SvgRenderer;

Figura replicada do código acima rodado no Processador L-systems.

A imagem será apresentada aqui.

...