Figuras fractais geradas por gramáticas formais
english version

O que começa por ver é um «show» com as primeiras iterações de vários algoritmos que geram figuras fractais com base em gramáticas formais. Quando acabar o «show», experimente carregar no botão «Iterar» para ver uma planta «em desenvolvimento». O «show» pode ser interrompido carregando no botão da direita, que inicialmente tem um P (de Parar) e pode ser reiniciado premindo o mesmo botão quando ele tem um S.

Cada vez que uma nova linha é desenhada, evolui numa direcção que faz um ângulo com a anterior, com um valor escolhido aleatoriamente e alternadamente positivo e negativo. Por exemplo, se o ângulo seleccionado for +45º, o valor do ângulo ficará alternadamente entre (0º e +45º) e (0º e -45º). Se clicar sucessivamente no botão «+», pode ver a mesma planta desenhada usando novos valores aleatórios. Se clicar no botão «determinístico», o valor do ângulo passa a ser exactamente de + ou - 45º. O ângulo usado pode ser alterado no campo seguinte, à direita de âng, onde inicialmente se lê o valor «45», para o programa Planta1f. O outro botão permite ver o desenho a uma só cor.

Experimente seleccionar «cadeia» para ver a cadeia de comandos que está a ser utilizada para desenhar a planta em cada iteração (no botão passará a ficar escrito «normal»; se o clicar de novo, voltará a ficar em cadeia» e deixará de se ver a geração da cadeia. )

(Usando o selector da direita, pode seleccionar outros programas interessantes)

O primeiro programa - Planta1f - é feito usando uma «tartaruga» que avança do modo estipulado na sua cadeia de instruções. Em cada iteração aplica-se um conjunto de regras de substituição para ir modificando essa cadeia. É o que se chama uma gramática formal para gerar cadeias de caracteres. As regras usadas são as seguintes:

0 -» 1 [+0] 1 [-0] 0
1-» 11
[-» [
]-» ]

O 0 corresponde a desenhar um círculo. O 1 corresponde a dar um passo em frente. O + e - correspondem a somar ou subtrair o ângulo seleccionado. O [ corresponde a guardar a posição actual para se poder voltar a ela quando é executado o ] correspondente.

Descrição mais detalhada

Usando o selector da direita, pode seleccionar os outros programas. As regras e cadeias iniciais respectivas são as seguintes:

Programa

Cadeia inicial

Regras

Ângulo

Planta1

0

0 -» 1 [+0] 1 [-0] 0
1-» 11
[-» [
]-» ]
 

Planta2

0

0 -» 1-[[0]+0]+1[+10]-0
1-» 11

 

Planta3

0

0 -» 1[+0]1[-0]+0
1-» 11

 

Planta4

0

0 -» 1[+0][1-0]

 

Planta5

1

1 -» 1[+1]1[-1]1  

Planta6

0

0 -» 1[+0][-0]10

 

Planta7

1

1 -» 1[-11]1[+11]1

 

Planta8

1

1 -» 11+[+1-1-1]-[-1+1+1]

22.5º

Planta9

1

1 -» 1[+1[+1][-1]1] [-1[+1][-1]1] 1 [+1][-1]

 

Cristal

[1]+[1]+[1]+[1]+[1]+[1]

1 -» 111[1][+[1]+1][-[1]-1]

60º

Curva de Hilbert

7

6-» -71+616+17-
7-» +61-717-16+

90º

Curva deKoch

1++1++1

1 -»1-1++1-1

60º

Ilha de Koch

1+1+1+1

1 -»1-11+11+1+1-1-11+1+1-1-11-11+1

90º

Ilha de Koch1

1+1+1+1

1 -»1+1-1-11+1+1-1

90º

Curva em escada

1+1+1+1

1 -»1+1-1-1+1

90º

Curva em escada1

1+1+1+1

1 -»1-1+1+1-1

90º

Curva de Koch1

1+1+1+1

1 -»11+1+1+1+11

90º

Curva de Koch2

1+1+1+1

1 -»1+11++1+1

90º

Curva de Koch3

1+1+1+1

1 -»11+1++1+1

90º

Curva de Koch4

1+1+1+1

1 -»11+1+1+1+1+1-1

90º

Curva hexagonal

a

a-» a+b++b-a--a-b+
b-» -a+bb++b+a--a-b

60º

Curva de Peano

6

6-» 61716+1+71617-1-61716-
7-» 71617-1-61716+1+71617

90º

Curva em cruz

1+61+1+61

6-»61-1+1-61+1+61-1+1-6

90º

Curva de Serpinsky

a

a-» b-a-b
b-» a+b+a

60º
(*)

Curva cobra

+6++6

6-»616++616

45º

Curva de Campos

+6++6

6-»616++616
1 -»11

45º

Curva dragão

16

6-» 6+71+
7-» -16-7

90º

Curva espiral

6666

6-»7+7+7+7+7+7+
7-»(1+1+1+1(---7-8)+++++1+++++
+++1-1-1-1)
8-»(1+1+1+1(---8)+++++1+++++++
+1-1-1-1)

15º

Curva pentagonal

[7]++[7]++[7]++[7]++[7]

6 -» 81++91----71[-81----61]++
7 -» +81--91[---61--71]+
8 -» -61++71[+++81++91]-
9 -» --81++++61[+91++++71]--71
1 -» .... (são eliminados em cada iteração)

36º

Conjunto de Cantor

1

1-»1x1
x-»xxx

 
(*) neste caso, o ângulo muda de sinal em cada iteração para que os triângulos fiquem todos assentes sobre a base.

Note que os comandos 6, 7, 8 e 9 não correspondem a nenhuma acção específica e são apenas usados para fazer evoluir as curvas; o comando x corresponde a dar um passo sem desenhar e os comandos a e b desenham ambos um passo. Os programas cujo nome termina em f são apenas versões em que o comando 0 insere uma «flor».

Experimente alterar os valores dos ângulos e usar a opção «aleatório» nos programas que, por defeito, ficam na opção «determinístico».

Montanha Fractal

O atractor de Lorenz atractor - o efeito borboleta num atractor estranho

Conjuntos de Mandelbrot e Julia