Nuvole frattali

Nuvole frattali

Le nuvole sono un esempio significativo di frattale. Quelle che noi proponiamo in questa prima parte sono un esempio di frattale IFS, facili da realizzare e, secondo noi, anche belle da vedere.

Passo 1

Si parte da un quadrilatero, ad esempio un parallelogramma, e si calcolano le coordinate del punto di incontro delle diagonali.
Indicati con

A(x1,y1); B(x2,y2); C(x3,y3); D(x4,y4);

i quattro vertici del parallelogramma, si ottengono con facilità le coordinate del punto di incontro delle diagonali:
O((x1+x2+x3+x4)/4,(y1+y2+y3+y4)/4)

Disegneremo il punto O sullo schermo.

Passo 2

Dal punto O condurre la parallela a CD che incontra in

M((x1+x4)/2, (y1+y4)/2) il lato AD;

in P((x2+x3)/2, (y2+y3)/2) il lato BC.

Passo 3

Dal punto O condurre la parallela ad AD che incontra in

N((x1+x2)/2, (y1+y2)/2) il lato AB;

in Q((x3+x4)/2, (y3+y4)/2) il lato CD.

Ora il parallelogramma ABCD risulta diviso in quattro parallelogrammi. In ognuno di essi potremo ripetere il procedimento precedente.

Precedente Successivo

Osserviamo come si evolve il nostro bozzetto di nuvola passo per passo premendo su successivo nella colonna a fianco.
Come si può osservare, i punti si dispongono in modo troppo ordinato per poter formare una nuvola.

Passo 4

Aggiungiamo allora qualche elemento di casualità. Potremo spostare i punti a destra o a sinistra, in alto o in basso, di una piccola percentuale rispetto alla loro posizione standard.

Precedente Successivo

Osserviamo come si evolve il nostro bozzetto di nuvola passo per passo premendo su successivo nella colonna a fianco dopo che abbiamo aggiunto qualche elemento di casualità.
All'inizio i punti sono disposti in modo simile al precedente, ma già dalla terza iterazione accennano a formare proprio una nuvola.

Passo 5

Ora pensiamo ad aggiungere il colore, per ottenere, ad esempio, una nuvola come quella della figura a lato. Per prima cosa conviene scegliere una tonalità di base come rosa o grigio. L'idea di tridimensionalità si ottiene aggiungendo delle chiazze di colore diverso ma sempre abbastanza in scala. Nel nostro caso, inoltre, la nuvola si schiarisce gradatamente andando da in alto a sinistra verso il basso a destra.

PROGRAMMA IN LINGUAGGIO DI PROGETTO

  1. Dichiarare le seguenti variabili
    • x1 = ascissa del punto A
    • y1 = ordinata del punto A
    • x2 = ascissa del punto B
    • y2 = ordinata del punto B
    • x2 = ascissa del punto C
    • y3= ordinata del punto C
    • x4 = ascissa del punto A
    • y4 = ordinata del punto A
    • xb = ascissa del punto O
    • yb = ordinata del punto O
  2. Attribuire alle variabili dei valori affinchè formino i vertici di un parallelogramma. Nel nostro esempio:
    • x1=40
    • y1=40
    • x2=100
    • y2=40
    • x3=80
    • y3=80
    • x4= 20
    • y4= 80
  3. Stabilire un numero di cicli per la formazione della nuvola, ad esempio 8
  4. Preparare la procedura nuvola:
    Procedura nuvola
    Se n = 0 allora non fare niente
    Altrimenti
    xb = (x1 + x2 + x3 + x4) / 4
    yb = (y1 + y2 + y3 + y4) / 4
    Calcolo dell'ascissa e dell'ordinata del punto di incontro delle diagonali
    x1t = (x1 + x2) / 2 + 0.5 * Abs(x1t - x1) * (Rnd - 0.5)
    y1t = (y1 + y2) / 2 + 0.4 * Abs(y1t - y1) * (Rnd - 0.5)
    x2t = (x2 + x3) / 2 + 0.25 * Abs(x2t - xb) * (Rnd - 0.5)
    y2t = (y2 + y3) / 2 + 0.3 * Abs(y2t - yb) * (Rnd - 0.5)
    x3t = (x3 + x4) / 2 + 0.5 * Abs(x3t - x4) * (Rnd - 0.5)
    y3t = (y3 + y4) / 2 + 0.5 * Abs(y3t - y4) * (Rnd - 0.5)
    x4t = (x1 + x4) / 2 + 0.8 * Abs(xb - x4) * (Rnd - 0.5)
    y4t = (y1 + y4) / 2 + 0.55 * Abs(yb - y4) * (Rnd - 0.5)
    Calcolo dell'ascissa e dell'ordinata dei punti medi dei lati del parallelogramma con l'aggiunta di una percentuale di casualità.
    L'istruzione Rnd genera un numero casuale compreso fra 0 ed 1
    Se il resto della divisione di 100 * xb per n = 1, allora
       blu = 210
       rosso = 1.34 * blu
       verde = 0.89 * blu
    Altrimenti
       verde = Round(xb + yb + (xb + yb) * (Rnd -0.5))
       blu = 1.5 * verde
       rosso = 1.5 * verde
    Fine se
    Calcolo del colore, in parte dipendente dalla posizione dell'ascissa del punto medio e in parte dipendente dal resto della divisione per n della somma di xb ed yb.

     

    Call nuvola(n - 1, x1, y1, x1t, y1t, xb, yb, x4t, y4t)
    Call nuvola(n - 1, x1t, y1t, x2, y2, x2t, y2t, xb, yb)
    Call nuvola(n - 1, xb, yb, x2t, y2t, x3, y3, x3t, y3t)
    Call nuvola(n - 1, x4t, y4t, xb, yb, x3t, y3t, x4, y4)
    Fine se
    Fine procedura
    Chiamata alla procedura nuvola passando come parametri i vertici dei punti "medi" trovati prima.
    Si tratta cioè di ripetere la procedura in alto a destra, in alto a sinistra, in basso a sinistra, in basso a destra.
  5. Chiamare la procedura nuvola passando come parametri il numero delle iterazioni, le coordinate dei vertici del parallelogramma, il colore suddiviso nelle sue componenti rosso, verde, blu.

Ecco infine altri esempi di nuvole: le forme diverse sono dovute all'introduzione del caso anche nella generazione dei vertici di partenza.


 

 

Introduzione
Definizione

Realizzazione

Tipi di frattali
Caratteristiche
Altri IFS
Indice
Home
Contatti

©2002 www.webfract.it