sábado, 7 de novembro de 2009

Problema 5.36




São rosas senhor... Controlar uma tartaruga e a sua caneta não é difícil. O problema neste caso, tem a ver mais com a capacidade para gera uma pétala geometricamente perfeita. O programa que se segue mostra como. Fica o aviso: se são conhecermos os comandos, claro que é muito difícil!


def petala(pos,angulo,tamanho, amplitude):
""" Desenha pétala em pos com inclinação angulo e dimensão tamanho."""
#prepara
cTurtle.up()
cTurtle.goto(pos)
cTurtle.setheading(angulo)
cTurtle.hideturtle()
raio = tamanho * math.sin(math.radians(amplitude)/2.0)
cTurtle.down()
# cor
cTurtle.colormode(255)
r=random.randint(0,255)
g=random.randint(0,255)
b=random.randint(0,255)
cTurtle.fillcolor(r,g,b)
# desenha
cTurtle.fill(True)
cTurtle.forward(tamanho)
cTurtle.setheading(cTurtle.heading() + amplitude/ 2.0)
cTurtle.circle(raio,180)
cTurtle.goto(pos)
cTurtle.fill(False)

Então como fizemos? Começamos por preparar a tartaruga, posicionando-a no sítio certo e com a devida inclinação (linhas 4 a 9). De seguida tratamos dos problemas de cor, gerando a dita aleatoriamente e indicando com queremos preencher o objecto gerado com a cor (linhas 10 a 15). Passamos por fim à fase de desenho (linhas 16 a 22). A pétala é construída com dois segmentos formando entre si o ângulo pedido, e um arco de circunferência de 180 graus a unir as suas extremidades afastadas. Atente-se na necessidade de reposicionar a direcção da tartaruga, antes de desenhar o arco, para que a pétala tenha uma forma simétrica.

2 comentários:

  1. O meu prog é diferente.. Uma questao de gosto, na verdade, mas pus a tartaruga a andar de forma contínua(em vez de a "virar")..

    def petala(pos, size, ori, angl, cor):
    cTurtle.up()
    cTurtle.fillcolor(cor)
    cTurtle.goto(pos)
    cTurtle.setheading(ori)
    cTurtle.right(angl/2)
    cTurtle.down()
    cTurtle.fill(True)
    cTurtle.forward(size)
    cTurtle.circle(size*(math.tan(math.radians(angl/(2.0)))), 180+angl)
    cTurtle.forward(size)
    cTurtle.fill(False)
    cTurtle.up

    ResponderEliminar
  2. Funciona sim senhor. Boa! Quanto à continuidade é tudo, como diz, uma questão de gosto... já que a re-orientação da tartaruga podia ser feita dentro do comando do círculo.

    ResponderEliminar