Alberi binari

Un albero binario frattale

import turtle

WIDTH  = 800
HEIGHT = 800

DISTANZA   = 0.38*HEIGHT # Dimensione del tronco
RICORSIONE = 9
RATIO      = 1.67        # Fattore di riduzione

turtle.setup(width=WIDTH, height=HEIGHT)
turtle.shape('turtle')
turtle.bgcolor("pink")
turtle.color("red", "#ff0000")
turtle.pensize(3)            # spessore
turtle.speed(0)

turtle.penup()
turtle.setposition(0,-DISTANZA)
turtle.pendown()
turtle.left(90)

def albero(n, d):
    if(n > 0):
        d2=d/RATIO
        turtle.forward(d)
        turtle.left(45)
        albero(n-1, d2)
        turtle.right(90)
        albero(n-1, d2)
        turtle.left(45)
        turtle.backward(d)

albero(RICORSIONE,DISTANZA)

Lo spessore di un ramo dipende dal suo livello

import turtle

WIDTH  = 800
HEIGHT = 800

DISTANZA   = 0.38*HEIGHT
RICORSIONE = 9
RATIO      = 1.67

turtle.setup(width=WIDTH, height=HEIGHT)
turtle.shape('turtle')
turtle.bgcolor("pink")
turtle.color("red", "#ff0000")
turtle.speed(0)

turtle.penup()
turtle.setposition(0,-DISTANZA)
turtle.pendown()
turtle.left(90)

def albero(n, d):
    if(n > 0):
        d2=d/RATIO
        turtle.pensize(n) # spessore
        turtle.forward(d)
        turtle.left(45)
        albero(n-1, d2)
        turtle.right(90)
        albero(n-1, d2)
        turtle.left(45)
        turtle.backward(d)

albero(RICORSIONE,DISTANZA)

Lascia un commento