Abbiamo chiesto al nostro omologo francese, il sito del CNRS Images des Mathématiques , diretto da Etienne Ghys, di scambiarci il materiale che pubblichiamo. Abbiamo iniziato traducendo un bell’articolo di Jos Leys sul Mandelbulb, un tentativo di trovare in 3D l’equivalente dell’insieme di Mandelbrot.
di Jos Leys
Mathematical Imagery ( page web)
Qualche tempo fa sono apparse un po’ dappertutto su internet le immagini di una nuova famiglia di insiemi frattali. Sono stati scoperti da un gruppo di appassionati, entusiasti delle immagini frattali, che collaborano in un forum. Una discussione on-line dal titolo «true Mandelbrot 3D» (il vero Mandelbrot 3D) è cominciata nel mese di settembre, arrivando a più di 500 contributi verso la fine di novembre. Decine di persone hanno partecipato dando suggerimenti su come modificare le formule e le tecniche di visualizzazione, ma bisogna attribuire l’idea del Mandelbulb, il «bulbo Mandelbrot» a Daniel White e Paul Nylander.
Di che si tratta?
Molti lettori probabilmente conoscono l’immagine sulla sinistra che è l’insieme di Mandelbrot in due dimensioni. Per ogni numero complesso m, si considera la trasformazione del piano complesso definita da $$z \rightarrow z^2+m$$. Partendo da $$z_0=0$$, si itera questa trasformazione, ossia si costruisce la successione $$z_n$$ con $$z_{n+1}=z^2_n=m$$. L’insieme di Mandelbrot è l’insieme dei valori m qui per cui la successione zn non tende all’infinito quando n tende all’infinito.
Prendere il quadrato di un numero complesso z consiste a raddoppiare l’argomento e a fare il quadrato del modulo modulo. Poi aggiungiamo m. Si ottiene un nuovo punto e si ripetono le stesse operazioni. Alcuni punti resteranno vicino all’origine, anche dopo molte operazioni, e altri invece divergeranno all’infinito. L’insieme di Mandelbrot è dunque la figura formata dai valori di c per cui l’origine non va all’infinito in questo processo.
La figura è frattale: quando si ingradisce enormemente si vedono dei dettagli sbalorditivi (guardate per esempio questo film, estratto dalla serie di film divulgativi Dimensions, dove si può vedere anche l’effetto dato dal prendere il quadrato di un numero complesso su una foto). E possiamo andare oltre al semplice quadrato di un numero complesso. Se si itera $$z_n$$ con $$z_{n+1}=z^p_n=m$$, con un qualsiasi numero p, si otterrà ancora un insieme di Mandelbrot. Ecco gli insiemi con $$p=3$$, $$p=4$$ e $$p=8$$. In quest’ultima immagine, osservate i «bulbi» che circondano la figura. Li ritroveremo di nuovo in seguito.
A partire dalla sua scoperta nel 1979 fatta da Benoît Mandelbrot, molti appassionati hanno creato delle immagini frattali basate sulla semplice formula itervativa che abbiamo visto. Ecco allora un oggetto per cui abbamo milioni di dipinti e nessuna scultura!
Un problema è diventato una specie di Santo Graal degli appassionati di frattali: esiste un equivalente in tre dimensioni dell’insieme di Mandelbrot?
L’insieme di Mandelbrot consiste di una cardioide circondata da cerchi di tutte le dimensioni, che a loro volta sono circondati da diverse forme, come delle spirali, che diventano sempre più piccole. Ci sono dei riccioli da cui spuntano minuscole copie dell’insieme.
In tre dimensioni, ci immaginiamo un corpo principale munito di qualche sfera, e sulle spfere delle sfere più piccole e così via. Ci piacerebbe allora vedere dei riccioli da cui spuntano delle copie minuscole dell’insieme che a loro volta avrebbero dei riccioli microscopici etc…
Diciamo subito che nessuno ha ancora trovato un tale oggetto, ma d’altra parte nessuno ha ancora dimostrato che non possa esistere. Questo spinge gli appassionati dei frattali a continuare nella loro ricerca.
Il «Bristorbrot»
Come si potrebbe provare a trovare questo oggetto? Ecco un primo tentativo:
Per l’insieme di Mandelbrot, si usa un numero complesso $$z=a+\rm{i}b$$, dove $$\rm{i}^2=-1$$. Per cui:
$$z^2=(a+\rm{i}b)^2=a^2-b^2+\rm{i}2ab$$
Mettiamo la parte reale $$a^2-b^2$$ sull’asse x, e la parte immaginaria $$2ab$$ sull’asse y. In tre dimensioni ci servirebbe allora un numero «supercomplesso» come $$w=a + \rm{i}b+ jc$$, per avere qualche cosa da mettere sull’asse z. Chiamiamo le tre componenti semplicemente x,y,z.
Definiamo questi numeri a tre componenti. Imponiamo che $$\rm{i}^2=-1$$, $$\rm{j}^2=-1$$, $$ji=i$$, $$ij=-j$$. La moltiplicazione di i e j non è dunque commutativa. Se calcoliamo $$w^2=(a+ib+jc)^2$$, si ha:
$$x=a^2-b^2-c^2$$
$$y=2ab-bc$$
$$z=2ac+bc$$
Se $$c=0$$, ci si trova nel piano xy e abbiamo la stessa espressione per il quadrato che per i numeri complessi usuali. Se $$b=0$$, siamo nel piano xz e abbiamo la stessa espressione. Possiamo allora provare con una legge iterativa del tipo $$w \rightarrow w^2 + m$$, con m anche un numero «triplesso», sperando di trovare un oggetto 3D per cui le sezioni con i piani xy et xz siano degli insiemi di Mandelbrot.
Questa idea è stata proposta nel 1995 da Doug Bristor, un programmatore inglese, ed ecco cosa si trova.
Ecco le sezioni attraverso i piani xy (a sinistra) e xz (a destra):
Anche qui si può andare oltre al quadrato dei «triplessi», e disegnare dei «Bristorbrot» di grado più alto.
Il sistema di Bristor non è male, ma non possiamo dire ancora di aver trovato il Santo Graal!
Disegnare oggetti frattali in 3D
Prima di arrivare al Mandelbulb, illustriamo un attimo i metodi per visualizzare questi oggetti in 3D. Per i frattali 2D basta fare un’iterazione per ogni pixel dell’immagine. Se il punto si allontana dall’origine è considerato fuori dall’insieme, e resta da decidere che color dare a questo punto. Si potrebbero semplicemente colorare tutti i pixels «fuori» di bianco e i pixel «dentro» di nero, ma ci sono molti altri metodi. I metodi per colorare i pixels sono spesso basati sul numero di iterazioni necessarie perché il modulo diventi sufficientemente grande per essere dichiarato «fuori» (ossia più grande di un certo numero prefissato).
Per rappresentare un oggetto 3D, si deve pensare all’immagine come a un piano di proiezione Si sceglie un punto di vista virtuale si si crea un raggio da questo punto di vista verso ogni punto del piano di proiezione, ossia verso ogni pixel dell’immagine. Per ogni raggio, bisogna determinare se incontra l’oggetto frattale e, in caso positivo, in quale punto del raggio.
La cosa più semplicie sarebbe di far muovere un punto sul raggio verso il piano di proiezione, facendo dei piccoli passi, fare le iterazioni a ogni passo, e fermarsi quando l’iterazione relativa al punto sul raggio ci dice che siamo dentro. Il problema è che non sappiamo, a priori, dove si trovi l’oggetto frattale e dovremmo prendere dei passi piccolissimi per essere sicuri di non perderci nulla. (potremmo infatti avere dei riccioletti molto fini) e si rischia di fare un gran numero di passi inutili se il raggio non incontra l’oggetto. Insomma, avremmo degli enormi tempi di calcolo.
Se invece si conosce una stima della distanza tra un punto sul raggio e l’oggetto frattale, allora possiamo innanzitutto avanzare velocemente e poi aggiustare i passi quando siamo vicini all’oggetto. Fortunatamente si conosco queste stime, e possiamo disegnare gli oggetti abbastanza rapidamente. Questo metodo, detto «analitico» è stato sviluppato da David Makin.
A questo punto si implementa una tecnica detta di «ray-tracing», che deve essere adattata alla superficie irregolare del frattale. Le immagini che seguono si ottengono con un minuto circa di tempo di calcolo (1000*1000 pixels) [2]. Osserviamo che è anche possibile programmare questi algoritmi sul processore della scheda grafica del computer, potendo quindi calcolare questi immagini in una frazione di secondo!
Il «Mandelbulb»
Torniamo alla ricerca del Mandelbrot 3D.
Un punto nello spazio a tre dimensioni è descritto da tre coordinate x, y, z ma possiamo anche descrivere la posizione di un punto usando le coordinate sferiche. La posizione del punto P a distanze Rdall’origine è data dai due angoli t e p in questo modo:
$$x = R \sin(p) \cos(t)$$ , $$y= R \sin(p) \sin(t)$$ , $$z = R \cos(p)$$
Gli angoli si calcolano con le formule $$t=\arctan(x/y)$$ e $$p=\arctan (z/(x^2+y^2)^{(1/2)})$$.
Ecco l’idea di Daniel White: poiché il quadrato nella formula iterativa di Mandelbrot equivale a prendere raddoppiare l’angolo e fare il quarato del modulo, si può definire un «quadrato» di un punto in coordinate sferiche come
$$x=R^2 \sin(2p) \cos(2t), \ y=R^2 \sin(2p)\sin(2t), \ R^2 \cos(2p)$$.
O in generale: $$ x=R^q\sin(qp) \cos(qt)$$, $$y= R^q\sin(qp)\sin(qt)$$, $$z= R^q\cos(qp)$$. Per cui possiamo definire un’iterazione $$w\rightarrow w^q+c$$.
Ecco cosa otteniamo per $$q=2$$.
Delusione! L’oggetto non somiglia per niente all’insieme di Mandelbrot. È vero che si intravede qualche elemento frattale sull’oggetto, come i piccoli alberelli sul lato sinistro, ma non sembra ancora il famoso Graal. Proviamo allora altri valori di q? Ecco $$q=3$$:
Sembra si vada nella buona direzione, Proviamo $$q=4$$:
Aumentando il grado sembra che ci siano sempre più «bulbi» che spuntano sull’oggetto. Prendiamo allora $$q=5$$:
… e saltiamo a $$q=8$$:
Questo è il Mandelbulb di grado 8 che è diventato più popolare, ma niente ci impedisce di disegnare il Mandelbulb di grado 16:
Per meglio apprezzare i dettagli, guardiamo ancor più da vicino:
L’animazione qui sotto prova che l’oggetto è proprio un frattale: è uno zoom dell’ordine di $$1^12$$, che vuol dire che se la prima immagine è grande come la Terra, l’ultima mostra i dettagli di un centesimo di millimetro (10 microns)…
Troverete altre immagini sul sito dell’autore. Possiamo anche ammirare un’immagine gigantesca fatta daDaniel White qui.
Non abbiamo dunque ancora trovato il Santo Graal la ricerca continua; ma strada facendo abbiamo fatto questa bella scoperta del Mandelbulb. Per partecipare e seguire le future attività di questi appassionati, basta iscriversi nel sito Fractalforums.com. Sarete i benvenuti!
Notes
[1] Jussi HARKONEN. On smooth fractal coloring techniques. (Master’s thesis)
[2] Le immagini di questo articolo sono state calcolate con il programma Ultrafractal su di un PC con 2 core.