L’albero binario con angolo di rotazione 90°.

Il codice è molto più elaborato
- Genera gli alberi uno dopo l’altro, con ricorsione da 1 a 12.
- Il nuovo albero ricopre il vecchio, con spessore crescente.
- Per aumentare la velocità
- non appare la tartaruga
- i rami di un albero appaiono tutti contemporaneamente
- utilizza le funzioni
tracer(0)eupdate().
import time # sleep()
import turtle
def set_all():
global POSIZIONE, DISTANZA, DISTANZE, RIC_MAX, FATTORE
WIDTH = 800 # larghezza finestra
HEIGHT = 800 # altezza finestra
RIC_MAX = 12 # massima ricorsione
POSIZIONE = HEIGHT*0.4 # posizione iniziale
DISTANZA = HEIGHT*0.33 # dimensione iniziale della curva
DISTANZE = [0]*(RIC_MAX+1) # dimensioni successive
FATTORE = 0.7 # Fattore moltiplicativo
turtle.setup(width=WIDTH, height=HEIGHT)
turtle.bgcolor("cyan")
turtle.hideturtle()
turtle.pencolor("blue")
turtle.pensize(1)
turtle.tracer(0)
def start_draw(r):
DISTANZE[r] = DISTANZA
for i in range(r-1,0,-1):
DISTANZE[i]=DISTANZE[i+1]*FATTORE
turtle.penup()
turtle.setposition(0, -DISTANZA)
turtle.setheading(90)
turtle.pendown()
def end_draw(r):
turtle.update()
turtle.title("Albero binario (90°), r = " + str(r))
time.sleep(1)
def albero(n):
d=DISTANZE[n]
turtle.pensize(n)
turtle.forward(d)
if(n > 1):
turtle.left(90) ; albero(n-1)
turtle.right(180); albero(n-1);
turtle.left(90)
turtle.backward(d)
set_all()
for r in range(1, RIC_MAX+1):
start_draw(r)
albero(r)
end_draw(r)
turtle.done()