
Oggi utilizzeremo la libreria Python Turtle Graphics per mostrare quanto sia semplice e divertente creare al PC grafici colorati e ricorsivi.
Uno dewi doni che ho maggiormente apprezzato da bambino fu lo “spirograph“. Null’altro che una serie di ruote dentate in plastica, da far “girare” con una penna colorata lungo un percorso circolare, anch’esso dentato. Il rapporto tra il numero dei denti di ciascuna ruota e quello del percorso consentiva di creare disegni fantastici.

L’avvento dell’home computer (nel mio caso un Commodore 64) mi consentì di studiare le funzionalità grafiche e di calcolo automatico. Cercavo le formule delle più famose curve cicloidi (quelle, per intenderci, create in coordinate polari e in genere rappresentate da coppie di equazioni trascendenti) per mettere alla prova le mie cognizioni e i miei computer. Avevo appena acquistato un clone IBM AT da 20 MHz con annesso coprocessore matematico 80287 da 8 MHz (allora era l’unico modo per evitare di perder tempo simulando calcoli in virgola mobile…) e mi divertivo in questo modo. Poi giunsero i programmi per lo sviluppo di grafici frattali, e tutto divenne ancor più appassionante.
Ma stiamo divagando.
Turtle Graphics
Oggi utilizzeremo il modulo turtle (tartaruga) per ricreare grafici interessanti utilizzando ill nostro fido Python.
Abbiamo visto che la grafica della tartaruga (in inglese turtle graphics) o geometria della tartaruga è un termine utilizzato nella computer grafica come metodo di programmazione della grafica vettoriale, che si basa sull’utilizzo di un cursore relativo (detto “tartaruga”) su un piano cartesiano (asse x e y). Si tratta di un elemento fondamentale del linguaggio di programmazione Logo, per cui è stata originariamente sviluppata da Seymour Papert alla fine degli anni 60.
La tartaruga ha tre attributi:
- una posizione
- Un orientamento
- Una penna con attributi (colore, larghezza, indicatore di penna sollevata o abbassata).
La tartaruga si muove attraverso dei comandi relativi alla sua posizione, come “vai avanti di 10” e “gira a sinistra di 90”. I valori numerici rappresentano grandezze diverse, che possono essere ad esempio millimetri, pixel o gradi sessagesimali. Alla penna che la tartaruga impugna possono essere attribuiti un colore o una larghezza. Uno studente può comprendere (e prevedere e ragionare su) il movimento della tartaruga immaginando cosa farebbe se fosse una tartaruga.
Da questi elementi costitutivi si possono costruire forme più complesse come quadrati, triangoli, cerchi e altre figure composte. Combinato con flusso di controllo, procedure e ricorsione. L’idea dei grafici tartaruga è utile anche nei sistemi L per generare frattali.
Il programma di oggi
Oggi vedremo come creare un divertente grafico composto da una retta che ruota attorno ad un punto, modificando a poco a poco la porpria lunghezza ed i propri colori.
Il programma è semplicissimo, ma l’effetto finale è garantito.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
from turtle import * # from turtle import speed, bgcolor, colormode, fd, rt, pencolor speed(15) bgcolor('black') r, g, b = 255, 0, 0 for i in range(255*2): colormode(255) if i < 255//3: g += 3 elif i < (255*2)//3: r -= 3 elif i < 255: b += 3 elif i < (255*4)//3: g -= 3 elif i < (255*5)//3: r += 3 else: b -= 3 fd(50+i) rt(91) pencolor(r, g, b) # Exit on click feature exitonclick() |
Analizziamolo assieme.
Per prima cosa vengono importati i moduli necessari per la grafica. IO ho importato l’intero modulo per avere accesso all’ultima funzione, exitonclick(), ma se non vi occorre potete tranquillamente procedere a decommentare l’importazione selettiva mostrata nella riga 2. Questo vi permetterà di liberaree parte della memoria fisica del vostro computer.
Definiamo quindi le costanti di ambiente (velocità di esecuzione, colore dello sfondo, variabili di colore).
Il loop non fa altro che
- Vvariare il parametro i e con esso alterare il colore della linea tracciata.
- Disegnare una riga di lunghezza crescente, anch’essa parametrizzata sulla variabile i
- Ruotare l’orientamento della penna di 91 gradi (in modo da creare una sorta di “quadrato aperto”)
- Assegnare alla penna il colore con le nuove componenti appena calcolate dal valore di i
Al termine del loop, il programma si ferma, in attesa di un click del mouse per chiudersi.

Si può fare di più
Come avete visto, le funzioni inserite nel loop sono sostanzialmente tre: disegna, ruota, cambia_colore. Facoile no?
Ma conosco i miei lettori, e sono convinto che abbiano già intravisto le caratteristiche del linguaggio, associato azd una propgrammazione un po’ più “spinta”.
Ad esempio, potremmo creare un algoritmo ricorsivo che disegni un albero frattale, l’Albero della Vita.
Il programma potete scaricarlo da questo indirizzo.
L’immasgine finale? Eccola qui!

Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
- Raspberry PI 5
- Raspberry PI 400
- Raspberry PI Pico
- Programmiamo il Pico