Ecco il frattale di Cesāro costruito con il metodo di Barnsley.
Nel caso del frattale di Cesaro la contrazione non č fissa, ma dipende dall'angolo α: pertanto porremo: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 k |
Pallina gialla |
Contrazione di k; rotazione di α in verso antiorario; traslazione orizzontale di k. (misura di AB) |
Pallina verde |
Contrazione di k; rotazione di α in verso orario (equivalente ad una rotazione in verso antiorario di -α); traslazione orizzontale di 1/2 (misura di AH) e verticale di k * senα (misura di CH). |
Pallina blu |
Contrazione di k; traslazione orizzontale di k + 2kcosα (misura di AD). |
|
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 | k | 0.00 | 0.00 | 0.00 | k | 0.00 | 0.25 |
Pallina rossa |
II | kcosα | - ksenα | k | ksenα | kcosα | 0 | 0.25 |
Pallina gialla |
III | kcosα | ksenα | 0.5 | -ksenα | kcosα | ksenα | 0.25 |
Pallina verde |
IV | k | 0 | 0 | 0 | k | k + 2kcosα | 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'= kxcosα + kysenα + 0.5) AND (y'= -kxsenα + kycosα+ksenα )
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 Leggi l'angolo a k = 1 / (2 * (1 + cosa)) x=1 y=1 | a deve essere in radianti; 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 nomeT) minore di 100 | Si inizia il ciclo: viene
estratto un numero casuale che ci permette di impostare la trasformazione a
seconda del suo valore
| SeT < 25 allora x1 = k * x y1 = k * y Ecco la prima trasformazione, applicata con probabilitā del
25% |
| Altrimenti seT < 50 allora x1 = k * cosa * x - k * sena * y + k y1 = k * sena * x + k * cosa * y Ecco la seconda trasformazione, applicata con probabilitā del
25%
|
| Altrimenti seT < 75 allora x1 = k * cosa * x + k * sena * y + 1/2 y1 = - k * sena * x + k * cosa * y + k * sena Ecco la terza trasformazione, applicata con
probabilitā del 25%
|
| Altrimenti x1 = k * x + k * (1 + 2 * cosa ) 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 | |
| | | | |
Š2010 www.webfract.it