Albero binario – 90°

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) e update().
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()

Lascia un commento