7.5.2.6 Frattali
di Julia
Un frattale di Julia è una 'fetta'
tridimensionale di un oggetto quadridimensionale creato generalizzando
il procedimento che si usa per creare i classici insiemi frattali di
Julia. Puoi ottenere una grande quantità di strani oggetti usando
questo tipo di frattale, compresi alcuni che avranno l'aspetto di strani
ammassi spiraliformi.
La sintassi di un frattale Julia è la seguente :
julia_fractal {
PARAMETRO_4D // il valore di default è <1,0,0,0>
[ quaternion | hypercomplex ] // il valore di default è quaternion
[ sqr | cube | exp |
reciprocal | sin | asin |
sinh | asinh | cos | acos |
cosh | acosh | tan | atan |
tanh | atanh | log | pwr(X,Y) ] // il valore di default è sqr
[ max_iteration N_MAX_ITERAZIONI] // il valore di default è 20
[ precision PRECISIONE ] // il valore di default è 20
[ slice NORMALE_4D, DISTANZA ] // i valori di default sono <0,0,0,1>,0
}
Il vettore a quattro dimensioni PARAMETRO_4D
è il classico parametro p
della formula iterativa di Julia f(h)+p.
Il frattale di Julia è calcolato usando un algoritmo che determina
se un punto arbitrario h(0) in uno spazio quadridimensionale si
trova all'interno o all'esterno dell'oggetto. L'algoritmo richiede che
venga generata la sequenza di vettori h(0), h(1)... iterando la formula :
h(n+1) = f(h(n)) + p (n = 0, 1, ..., max_iteration-1)
dove p è il vettore quadridimensionale
del frattale Julia, ed f() è una delle funzioni elencate sopra,
specificata dalla presenza della parola chiave corrispondente. Il punto
h(0) che inizia la sequenza è considerato all'interno del frattale
Julia, se nessuno dei vettori della sequenza esce da una ipersfera
(sfera a quattro dimensioni) di raggio 4 attorno all'origine, prima che
l'iterazione dei numeri raggiunga il valore specificato per max_iterations.
Aumentando questo valore, alcuni punti escono dall'ipersfera, formando
il frattale.
A seconda del vettore di partenza assegnato, l'oggetto 'frattale' non è
necessariamente un oggetto aggregato : può accadere che sia
una nuvola di polvere frattale. Usando un basso valore di max_iterations
è possibile riunire la polvere e creare un oggetto solido. Un valore
alto per max_iterations
è più accurato, ma richiede un maggiore tempo di rendering.
Anche se non sono calcolati accuratamente, gli oggetti ottenuti con un
basso valore di max_iterations
possono comunque essere molto interessanti. Dal momento che l'oggetto matematico
descritto da questo algoritmo è quadridimensionale e POV-Ray renderizza
oggetti tridimensionali, si deve trovare un modo di ridurre il numero delle
dimensioni dell'oggetto da 4 a 3. Questo si ottiene facendo intersecare
il frattale quadridimensionale con un piano tridimensionale e proiettando
l'intersezione nello spazio tridimensionale. Questo piano è lo spazio
tridimensionale perpendicolare a NORMALE_4D
e distante DISTANZA
dall'origine. Non sono accettabili valori di 0 per NORMALE_4D
o per la sua quarta componente.
Puoi entrare in confidenza con la natura quadridimensionale del frattale
di Julia usando un'animazione e facendo variare con clock
il parametro della distanza del piano (DISTANZA).
Puoi far sì che il frattale appaia dal nulla, cresca e di nuovo
svanisca in relazione al variare del parametro distanza, in modo molto
simile a ciò che accade alla sezione bidimensionale di un oggetto
3D che passa attraverso un piano. Il parametro precision
è la tolleranza usata nel calcolo dei punti dell'oggetto. Maggiori
valori danno un risultato più accurato, ma un rendering più
lento. Usa un valore quanto più possibile basso, evitando però
che il frattale si deteriori.
La presenza delle parole chiave quaternion
o hypercomplex
determina quale tipo di algebra quadridimensionale è usato per calcolare
il frattale. Entrambe sono generalizzazioni quadridimensionali dei numero
complessi, ma nessuna soddisfa tutte le proprietà del campo (tutte
le proprietà dei numeri reali e complessi, sulle quali molti di
noi hanno dormito alle superiori). I quaternioni hanno la moltiplicazione
non commutativa, mentre i numeri ipercomplessi possono non avere
un inverso rispetto alla moltiplicazione per alcuni numeri diversi da zero
(è stato dimostrato che non si possono estendere i numeri complessi
alle quattro dimensioni mantenendone tutte le proprietà, quindi
qualcosa non può conservarsi). Entrambi questi metodi sono
stati scoperti nel XIX secolo. Tra le due, l'algebra dei quaternioni è
molto più nota, ma si potrebbe obiettare che gli ipercomplessi sono
più utili per i nostri scopi, dato che le funzioni di valori complessi,
come seno, coseno, ecc. possono essere estese ai numeri ipercomplessi in
maniera uniforme.
Per i curiosi, le proprietà algebriche di queste due algebre possono
essere derivate dalle proprietà della moltiplicazione dei vettori
che formano la base canonica dello spazio a quattro dimensioni : 1
= <1,0,0,0>, i=< 0,1,0,0>, j=<0,0,1,0>
e k=< 0,0,0,1>. In entrambe le algebre, per ogni x
vale che 1*x = x*1 = x (dove 1 è l'elemento
neutro rispetto alla moltiplicazione). I vettori base 1 ed i si
comportano esattamente come i familiari numeri complessi 1 ed i
in entrambe le algebre.
Le regole di moltiplicazione dei vettori della base, nell'algebra dei quaternioni,
sono le seguenti :
ij = k; | jk = i; | ki = j |
ji = -k; | kj = -i; | ik = -j |
ii = jj = kk = -1; | ijk = -1; |
Le regole di moltiplicazione degli stessi
vettori, nell'algebra degli ipercomplessi sono :
ij = k | jk = -i | ki = -j |
ji = k | kj = -i | ik = -j |
ii = jj = kk = -1 | ijk = 1 |
Per aumentare la velocità di calcolo
quando viene usata l'algebra dei quaternioni si usa una stima della distanza.
La prova del corretto funzionamento di questa stima della distanza, quando
la formula è generalizzata da due a quattro dimensioni non c'è,
ma la formula sembra comunque funzionare bene, nonostante la mancanza della
prova matematica.
La presenza di una delle funzioni sqr,
cube
ecc., determina quale di queste funzioni viene usata per f(h) nella formula
ricorsiva h(n+1) = f(h(n)) + p. La maggior parte delle funzioni è
valida solo se è presente la parola chiave hypercomplex.
Con i quaternioni funzionano solamente sqr
e cube.
Le funzioni sono funzioni complesse estese alle quattro dimensioni.
Un semplice esempio di frattale Julia è:
julia_fractal {
<-0.083,0.0,-0.83,-0.025>
quaternion
sqr
max_iteration 8
precision 15
}
Il primo rendering di frattali Julia
usando i quaternioni è stato fatto da Alan Norton e più tardi
da John Hart negli anni 80. Questa nuova possibilità di POV-Ray
segue Fractint nell'idea di andare oltre a ciò che è
noto nella letteratura matematica sull'uso degli ipercomplessi e generalizzando
la formula ricorsiva per arrivare ad usare una quantità maggiore
di funzioni oltre alla classica formula di Mandelbrot : z^2 + c. Con
due dimensioni in più e diciotto funzioni con le quali lavorare,
gli esploratori più intrepidi saranno in grado di creare nuove bestie
frattali da mettere nell'iperspazio. Fatevi sotto !
![]() |
![]() |
![]() |