Desafio 10

   Muitos continuam a procurar como fazer fractais no Logo. Por curiosidade? Pela Matemática? Pela beleza? Não sei.
  Dessa vez, como fazer um dragão e a curva C (ou de Lévy). O dragão é um dos mais simples fractais (o MegaLogo já vem com um de exemplo, mas trago outras soluções).

MegaLogo
para vai
limpe dt gd 90
drago 200 12
fim

para drago :lado :nivel
se :nivel = 0 [pf :lado pare]
drago :lado * 0.707 :nivel - 1
gd 90
drago1 :lado * 0.707 :nivel - 1
fim

para drago1 :lado :nivel
se :nivel = 0 [pf :lado pare]
drago :lado * 0.707 :nivel - 1
ge 90
drago1 :lado * 0.707 :nivel - 1
fim
Imagine
aprender vai
pd 90 ul ot
drago 200 12
fim

aprender drago :lado :nivel
se :nivel = 0 [pf :lado parar]
drago :lado * 0.707 :nivel - 1
gd 90
drago1 :lado * 0.707 :nivel - 1
fim

aprender drago1 :lado :nivel
se :nivel = 0 [pf :lado parar]
drago :lado * 0.707 :nivel - 1
ge 90
drago1 :lado * 0.707 :nivel - 1
fim
SuperLogo
aprenda vai
tat dt pd 90
drago 200 12
fim

aprenda drago :lado :nivel
se :nivel = 0 [pf :lado pare]
drago :lado * 0.707 :nivel - 1
pd 90
drago1 :lado * 0.707 :nivel - 1
fim

aprenda drago1 :lado :nivel
se :nivel = 0 [pf :lado pare]
drago :lado * 0.707 :nivel - 1
pe 90
drago1 :lado * 0.707 :nivel - 1
fim
xLogo e Micromundos
aprenda vai
ld dt pd 90
drago 200 12
fim

aprenda drago :lado :nivel
se :nivel = 0 [pf :lado pare]
drago :lado * 0.707 :nivel - 1
pd 90
drago1 :lado * 0.707 :nivel - 1
fim

aprenda drago1 :lado :nivel
se :nivel = 0 [pf :lado pare]
drago :lado * 0.707 :nivel - 1
pe 90
drago1 :lado * 0.707 :nivel - 1
fim

* Os procedimentos são quase os mesmos entre os diferentes softwares.
* Que tal usar uma outra cor de lápis ou experimentar outros níveis em drago 200 12 (de 12 para 10 ou 15, por exemplo) no procedimento vai?

Outra forma de fazer a mesma coisa:

MegaLogo
para drago :v :lado :dir
verifica :v < 1
sev [parafrente :lado]
sef [drago :v - 1 :lado 1 ~
gd 90 * :dir ~
drago :v - 1 :lado ( - 1 )]
fim
Imagine
aprender drago :v :lado :dir
se :v < 1 [pf :lado] [
drago :v -1 :lado 1
gd 90*:dir
drago :v -1 :lado (-1)
]
fim
SuperLogo
aprenda drago :v :lado :dir
senão :v < 1 [
parafrente :lado
] [
drago :v -1 :lado 1
pd 90*:dir
drago :v -1 :lado (-1)
]
fim
xLogo e Micromundos
aprenda drago :v :sz :dirdrago
se :v < 1 [
parafrente :sz
] [
drago :v -1 :sz 1
pd 90*:dir
drago :v -1 :sz (-1)
]
fim

Experimente drago 10 4 1 ou drago 10 1 1. Tendo um pouco mais de paciência, fiz drago 15 1 4 no xLogo.


O fractal curva C pode ser escrito assim:

SuperLogo
aprenda curva :lado :v
senão :v < 0 [pf :lado]
[curva :lado :v - 1
pd 90
curva :lado :v - 1
pe 90]
fim
Micromundos
aprenda curva :lado :v
sesenão :v < 0 [
pf :lado]
[curva :lado :v - 1
pd 90
curva :lado :v - 1
pe 90]
fim
xLogo
aprenda curva :lado :v
se :v < 0 [pf :lado]
[curva :lado :v - 1
pd 90
curva :lado :v - 1
pe 90]
fim
Imagine
aprender curva :lado :v
se :v < 0 [pf :lado]
[curva :lado :v - 1
gd 90
curva :lado :v - 1
ge 90]
fim

MegaLogo
para curva :lado :v
verifica :v < 0
sef ~
[curva :lado :v - 1 ~
gd 90 ~
curva :lado :v - 1 ~
ge 90]
sev [pf :lado]
fim
Curva
Experimente curva 4 8
Curva C - Particularidades

* Não esqueça que no Imagine, os procedimento começam com "aprender" e não "aprenda".
* O Micromundos usa "sesenão" em vez de "se". O Superlogo usa "senão".
* Onde está escrito "pd" e "pe", o Megalogo e o Imagine exigirão "gd" e "ge".


    Saiba mais em:
The Fastest Turtle in the West [em inglês]
Courbe du dragon [em francês]
Fractals, Turtle Dragon Curves [em inglês]