import turtle def quadrado(lado): """ Desenha um quadrado de lado.""" for i in range(4): turtle.forward(lado) turtle.left(90) def triangulo(lado): """ Desenha um triangulo de lado.""" for i in range(3): turtle.forward(lado) turtle.left(120) def pentagono(lado): """ Desenha um pentagono de lado.""" for i in range(5): turtle.forward(lado) turtle.left(72)e ao analisar o código para cada caso verificamos que todos têm em comum o facto de o produto do número de lados pelo ângulo de viragem ser sempre igual a 360. E terá que ser sempre assim para um polígono regular! Então podemos generalizar a nossa solução:
def poligono(lado, num_lados): """ Desenha um poligono de num_lados .""" for i in range(num_lados): turtle.forward(lado) turtle.left(360/num_lados)
Com este programa podemos desenhar qualquer polígono regular. Podemos pensar agora em alterar a solução geral desfazendo a relação entre o número de lados, o ângulo de viragem e 360 graus. Isso envolve considerar o ângulo como um parâmetro adicional da definição:
def formas(lado, num_lados, angulo): """ Desenha sequências de segmentos eventualmente produzindo formas fechadas.""" for i in range(num_lados): turtle.forward(lado) turtle.left(angulo)
Testando diferentes configurações verificamos que para algumas de novo obtemos formas fechadas. Alguns exemplos.
formas(100,5,144) formas(100,8,135) formas(100,10,108)
A razão para obtermos estas formas é simples: o produto do número de lados pelo ângulo de viragem é um múltiplo de 360!
Pode-se provar um teorema geral para qualquer forma fechada, seja polígono ou não: a soma dos ângulos de viragem ao longo da forma é sempre um múltiplo de 360. Será que o inverso é verdadeiro, ou seja, se a soma do ângulo de viragem for múltiplo de 360 graus então a forma é fechada? De um modo geral isto não é verdadeiro, embora seja verdadeiro para o caso das formas geradas pelo nosso programa formas.
Sem comentários:
Enviar um comentário