Alberi frattali con 2 rami

Esercizio 1

RATIO = 1.67

TO albero ramo
    IF ramo < 2 [ STOP ] ; fine della ricorsione

    FORWARD ramo         ; tronco
    LEFT    45           ; ramo di sinistra
    albero(ramo/RATIO)
    RIGHT   90           ; ramo di destra
    albero(ramo/RATIO)
    LEFT    45           ; torna alla radice
    BACK    ramo
END

CLEARSCREEN HOME HIDETURTLE
albero(200)

Esercizio 2

Angolo di 180° tra i rami e rapporto di riduzione inferiore (LIBRELOGO impiega alcune ore…)

RATIO = 1.45

TO albero ramo
    IF ramo < 2 [ STOP ]

    FORWARD ramo
    LEFT    90   albero(ramo/RATIO)
    RIGHT   180  albero(ramo/RATIO)
    LEFT    90
    BACK    ramo
END

CLEARSCREEN 
HOME 
HIDETURTLE
albero(200)

Esercizio 3

Introducendo un parametro per il livello della ricorsione è più semplice gestire altre caratteristiche dell’albero: spessore dei rami

TO ALBERO n d      ; n=ricorsione, d=dimensione
    IF n >= 1 [ 
        PENSIZE n  ; spessore del ramo
        FORWARD d
        d2=d/1.67  ; prossima dimensione
        LEFT    45  ALBERO(n-1, d2)
        RIGHT   90  ALBERO(n-1, d2)
        LEFT    45
        BACK    d
    ]
END

CLEARSCREEN 
HOME 
HIDETURTLE 
PENCAP “ROUND”

ALBERO(9, 200)

Esercizio 4

Utilizza delle liste con le costanti colore, spessore, dimensione per ogni livello della ricorsione

GLOBAL c, s, d ; colore, spessore, dimensione

TO ALBERO n
    GLOBAL c, s, d

    IF n >= 1 [
        PENSIZE  s[n]
        PENCOLOR c[n]
        PENDOWN  
        FORWARD  d[n]
        LEFT     45   ALBERO(n-1)
        RIGHT    90   ALBERO(n-1)
        LEFT     45
        PENUP    
        BACK     d[n]
    ]
END

CLEARSCREEN HIDETURTLE PENCAP “ROUND”

c=[“0”, “lime”, “lime”, “green”, “teal”, “chocolate”, “brown”, “brown”, “maroon”, “maroon”]
ricorsione=9
dimensione=240 
s=(ricorsione+1)*[0]
d=(ricorsione+1)*[0]
s[ricorsione]=30
d[ricorsione]=dimensione
FOR i IN RANGE ricorsione-1 0 -1 [
    s[i]=s[i+1]*0.75 ; spessore   diminuisce...
    d[i]=d[i+1]/1.67 ; dimensione diminuisce...
]

ALBERO(ricorsione)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *