Ricorsione per generare alberi: codice
Spiegazione
Funzione (ricorsiva) che disegna un segmento a partire dalle coordinate x, y con una direzione indicata da angolo e per una lunghezza ricavata attraverso livello.
La lunghezza del ramo parte da 130 pixel e si riduce al 60% a ogni livello di ricorsione.
Le coordinate dell’estremità finale del segmento vengono ricavate usando la conversione da coordinate polari (angolo, lunghezza) a coordinate cartesiane.
La funzione chiama se stessa due volte: una volta con un angolo maggiore e una con un angolo minore a quello di base.
Avvia la ricorsione a partire dal centro del bordo inferiore del canvas procedendo verso l’alto (PI*1.5) e con il livello iniziale impostato a zero.
Angoli casuali
Rompere la simmetria facendo impostare deviazioni casuali dell’angolo dei rami, ad esempio con:
Far impostare valori diversi usando il tasto in alto a destra nel codice.
Lunghezze casuali
Rompere la regolarità delle lunghezze dei rami usando un valore di base casuale diverso da 130, ad esempio con:
Spessori e colori
Prima dell’istruzione
line(), impostare gli attributi grafici della linea in base al valore dilivelloo casualmente, ad esempio usando:
Fiori
Far disegnare dei cerchi alla fine dei rami più piccoli (quando il livello è uguale a 7) aggiungendo un
elseall’ifdella funzione ricorsiva, ad esempio:
Tutti insieme
Seguendo tutti i suggerimenti, i risultati dovrebbero portare a qualcosa di simile:
