O que mais me atrai nas fractais, além de seus cálculos matemáticos, é um dos recursos utilizados em programação que poucas pessoas sabem como utilizar: Recursão.
Recursão é a capacidade de um método chamar a si mesmo várias vezes, essa técnica pode ser aplicada quando realizamos cálculos fatoriais. Sabemos que 5! (cinco fatorial) é 5x4x3x2x1 e o método utilizado para este cálculo é uma recursão, escrito em Python teria a seguinte codificação:
def fatorial(num): if (num > 1): return (num * fatorial(num-1)) else: return 1 print(fatorial(5))Dentro do método fatorial enquanto o número for maior que 1 é retornado uma nova chamada ao mesmo método só que com um valor menor, ou seja, neste caso, na primeira vez é passado o valor 5, o método fará uma chamada a si mesmo só que passando o valor 4, e assim sucessivamente até chegar ao valor 1.
Isso pode ser bem complexo para o iniciante em programação mas é um excelente recurso a se usar. Voltando as fractais, a recursão é a base do desenho, já que o mesmo deve se repetir um número limitado de vezes em posições com ângulos diferentes para que possa se formar o desenho.
Eis o código Python que permite o desenho de um pinheiro:
import turtle def drawBranch(size, angle): # Funcao recursiva para desenhar os galhos turtle.fd(size) if size > 8: # Quanto menor mais concentrado turtle.rt(angle/2) drawBranch(size*0.75, angle) turtle.lt(angle) drawBranch(size*0.75, angle) turtle.rt(angle/2) turtle.bk(size) # Parte principal. size = 150 # Tamanho Base da Arvore angle = 60 # Angulo entre os galhos. turtle.tracer(8,0) # Velocidade do desenho. turtle.mode('logo') # Orientacao - Use LOGO language orientation: turtle faces upward. turtle.pu() # Colocar a turtle em posicao. turtle.bk(size*2) turtle.pd() # Posicionar a pena de desenho. drawBranch(size, angle) # Iniciar o desenho. turtle.exitonclick() # Esperar para sairColoquei os detalhes do código em seu comentário. E como resultado teremos a seguinte imagem:
Obrigado e até a próxima
Fernando Anselmo
0 comentários:
Postar um comentário