LabASD - Fiocco di neve di Koch

Moreno Marzolla

Ultimo aggiornamento: 2023-03-18

(Crediti: prof. Violetta Lonati, Università di Milano)

Niels Fabian Helge von Koch By Olof Edlund, Public Domain, https://commons.wikimedia.org/w/index.php?curid=10118465
Niels Fabian Helge von Koch By Olof Edlund, Public Domain, https://commons.wikimedia.org/w/index.php?curid=10118465

Libreria libpsgraph.c

Questo esercizio fa uso della libreria libpsgraph che consente di produrre dei semplici grafici in PostScript. Per usare la libreria si può procedere come segue:

Funzioni fornite dalla libreria

La libreria permette di disegnare usando le funzioni della “turtle graphics”; il disegno prodotto viene salvato in formato PostScript su un file, il cui nome va specificato prima di iniziare a disegnare. Il file essere visualizzato con un apposito programma; se non ne avete uno già installato, si può caricare il file su questa pagina Web.

La libreria va usata in questo modo:

All’inizio, la “tartaruga” è orientata verso destra in orizzontale; quindi, se la prima istruzione è draw(10) ci si trova con un segmento orizzontale di lunghezza 10 orientato da sinistra verso destra.

Ad esempio, il programma seguente disegna un quadrato:

#include "libpsgraph.h"

int main( void )
{
    start("square.ps");
    draw(100); turn(90);
    draw(100); turn(90);
    draw(100); turn(90);
    draw(100);
    end();
    return 0;
}

Curva di Koch

Realizzare una funzione che, data una lunghezza in millimetri \(x\) e un intero \(n \geq 0\) produce la curva di Koch di ordine \(n\) e di “lunghezza” \(x\); per “lunghezza” qui si intende la lunghezza della sola base.

La curva di Koch prende il nome dal matematico svedese Niels Fabian Helge von Koch, che l’ha studiata per primo, ed è definita come segue:

Le curve di Koch di ordine \(n=0, \ldots, 4\) sono mostrate in Figura 1. Si può notare come la curva di ordine \(n=4\) sia composta da quattro curve di ordine \(n=3\) e lunghezza \(x/3\) orientate allo stesso modo dei quattro segmenti del caso \(n=1\).

Figura 1: Curve di Koch dall’ordine n=0 (in basso) fino a n=4 (in alto); si è usato x=50
Figura 1: Curve di Koch dall’ordine \(n=0\) (in basso) fino a \(n=4\) (in alto); si è usato \(x=50\)

Fiocco di neve di Koch

Realizzare ora una funzione che, data una lunghezza in millimetri \(x\) e un intero \(n \geq 0\), produce il fiocco di neve di Koch di ordine \(n\): esso si ottiene da un triangolo equilatero i cui lati siano costituiti da tre curve di Koch di ordine \(n\) e lunghezza \(x\) (Figura 2).

Figura 2: Fiocco di neve di Koch di ordine n=4 con x=50
Figura 2: Fiocco di neve di Koch di ordine \(n=4\) con \(x=50\)

Domande

File