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
75 visitas
perguntada Jul 6, 2018 em Ciência da Computação por Edmar Rocha Pereira (21 pontos)  
reclassificado Jul 6, 2018 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, 2018 por Edmar Rocha Pereira (21 pontos)  
editado Jul 6, 2018 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.

...