CURVA DI VON KOCH CON IL METODO DI BARNSLEY

Ecco il frattale di von Koch costruito con il metodo di Barnsley.

Si predispone un'urna con quattro palline, una rossa, una verde, una blu ed una gialla; ogni pallina contiene le istruzioni per una trasformazione.

Pallina rossa Contrazione di 1/3
Pallina gialla Contrazione di 1/3;
rotazione di 60° in verso antiorario;
traslazione orizzontale di 1/3.
Pallina verde Contrazione di 1/3;
rotazione di 60° in verso orario;
traslazione orizzontale di 1/2 e verticale di 0.289 (altezza del triangolo equilatero di lato 1/3).
Pallina blu Contrazione di 1/3;
traslazione orizzontale di 2/3.

 


 Segue la matrice delle trasformazioni che ne permettono la costruzione e che è riportata nella seguente tabella:

 

a

b

c

d

e

f

p

Estrazione

I

0.33

0.00

0.00

0.00

0.333

0.00

0.25

Pallina rossa

II

0.167

-0.289

+0.333

0.289

0.167

0.00

0.25

Pallina gialla

III

0.167

0.289

0.5

-0.289

0.167

0.289

0.25

Pallina verde

IV

0.33

0.00

0.667

0.00 

0.333

0.00

0.25

Pallina blu

E' questo un metodo compatto per scrivere le equazioni delle trasformazioni lineari, cioè quelle in cui le variabili sono tutte al primo grado; invece che scrivere:

(x'= ax + by + c) AND (y'= dx + ey + f)

si dispongono in una stessa riga i coefficienti che fanno parte della stessa trasformazione, mentre l'ultima colonna rappresenta la probabilità con cui applicare la trasformazione.

Ad esempio, riferendoci alla III trasformazione, che si applica con probabilità del 25%, possiamo scrivere:

(x'= 0.167x - 0.289y + 0.5) AND (y'= -0.289x + 0.167y+0.289 )

Non dimentichiamo che il nostro è un sistema di funzioni iterate, e dunque il risultato di ogni trasformazione deve diventare il numero in entrata per la prossima trasformazione, si tratta quindi di assegnare rispettivamente ad x ed a y x' ed y'.

Ecco il listato del programma in linguaggio di progetto:

INIZIA
 
k=1/3
 x=1
 y=1
K è il rapporto di contrazione;
x ed y sono rispettivamente l'ascissa e l'ordinata del punto di partenza.
 
Ripeti per 20000 volte: 
    Estrai un numero a caso (di nome T) minore di 100 
Si inizia il ciclo: viene estratto un numero casuale che ci permette di impostare la trasformazione a seconda del suo valore
 Se T < 25 allora
            x1 = k * x
            y1 = k * y
          
Ecco la prima trasformazione, applicata con probabilità del 25%
 Altrimenti se T < 50 allora
             x1 = k/2 * x - 0.289 * y + k
             y1 = 0.289 * x + k/2 * y
Ecco la seconda trasformazione, applicata con probabilità del 25%
 Altrimenti se T < 75 allora
                     x1 = k/2 * x + 0.289 * y + 1/2
                     y1 = - 0.289 * x + k/2 * y + 0.289
Ecco la terza trasformazione, applicata con probabilità del 25%
  Altrimenti  
           x1 = k * x + 2k
                  y1 = k * y
Ecco la quarta trasformazione, applicata con probabilità del 25%
Fine se.
Se hai già fatto 20 ripetizioni allora
   Disegna sullo schermo il punto moltiplicando la sua ascissa per la larghezza e la sua ordinata per l'altezza dello schermo grafico.
x = x1
y = y1
Le coordinate del punto trasformato sostituiscono i valori iniziali e ad esse si applica la prossima trasformazione.
Fine ciclo

FINE

 




Introduzione
Vita di Koch
Curva
Curva L-System
Curva IFS
Fiocco di neve
Anti - fiocco
Quadratico
Altri IFS
Indice
Home
Contatti

©2002 - 2007 www.webfract.it