LabASD - Fiocco di neve di Koch

Moreno Marzolla moreno.marzolla@unibo.it

Ultimo aggiornamento: 2021-03-26

(Esercizio della prof. Violetta Lonati, Università di Milano)

Libreria libpsgraph.c

Questo esercizio fa uso della libreria libpsgraph che consente di produrre dei semplici grafici in PostScript. Per usare questa libreria occorre 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 prodotto può essere visualizzato con un apposito programma, ad es. ghostview. Per Windows si può scaricare la versione a 32 bit oppure quella a 64 bit.

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.

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.

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

La curva di Koch prende il nome dal suo inventore, il matematico svedese Niels Fabian Helge von Koch, ed è definita come segue:

Figura 2: Curve di Koch dall'ordine n=0 (in basso) fino a n=4 (in alto)
Figura 2: Curve di Koch dall'ordine \(n=0\) (in basso) fino a \(n=4\) (in alto)

Le curve in Figura 2 sono state ottenute con \(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\) e di lunghezza \(x\): esso si ottiene come un triangolo equilatero di lunghezza \(x\) i cui lati siano stati sostituiti con curve di Koch di ordine \(n\) e lunghezza \(x\) (vedi Figura 3).

Figura 3: Fiocco di neve di Koch di ordine n=4
Figura 3: Fiocco di neve di Koch di ordine \(n=4\)

Il fiocco di neve di Koch in Figura 3 è stato ottenuto da tre curve di Koch di lunghezza \(x=50\).

Domande

File