Matteo Basei

Una collezione di piccoli programmi realizzati a scopo didattico.

Mandelbox

Il frattale di Mandelbrot è un insieme definito nel piano complesso. Non ne esiste una naturale e diretta generalizzazione in 3 dimensioni, perché non esiste una naturale e diretta generalizzazione dei numeri complessi in 3 dimensioni (esiste però in 4 e per le successive potenze di 2, secondo la cosiddetta costruzione di Cayley-Dickson che genera i quaternioni, gli ottonioni, eccetera).

Nel 2010 Tom Lowe trovò un algoritmo ispirato all'iterazione che definisce l'insieme di Mandelbrot che produce un interessante frattale in dimensione arbitraria chiamato Mandelbox.

Dettaglio di Mandelbox con parametri s = 2.8, r = 1/2 e f = 1.
Dettaglio del frattale Mandelbox con parametri s = 2.8, r = 1/2 e f = 1.

La definizione

L'iterazione $z_{n + 1} = z_n^2 + c$ con $z$ e $c$ complessi viene sostituita da $$ v_{n + 1} = \text{ballFold} \left( \text{boxFold} \left( v_n \right) \right) s + c $$ dove $v$ e $c$ sono vettori e $s$ una costante chiamata scale, che nella versione "standard" prende il valore $2$. Le le funzioni $\text{boxFold}$ e $\text{ballFold}$ sono definite rispettivamente da $$ \text{boxFold} \left( v_k \right) = \left\{ \begin{alignedat}{3} -v_k - 2 \quad &\text{se} \quad &v_k < -1 \\ v_k \quad &\text{se} \quad -1 \leq &v_k \leq +1 \\ -v_k + 2 \quad &\text{se} \quad &v_k > +1 \end{alignedat} \right. $$ (per ogni coordinata $k$) e $$ \text{ballFold} \left( v \right) = \left\{ \begin{alignedat}{2} v \frac{f^2}{r^2} \quad &\text{se} \quad v^2 < r^2 \\ v \frac{f^2}{v^2} \quad &\text{se} \quad v^2 < f^2 \\ v \quad &\text{altrimenti} \end{alignedat} \right. $$ (dove $v^2 = v \cdot v$ è il prodotto scalare di $v$ per se stesso, quindi il quadrato della sua lunghezza). Quest'ultima funzione dipende dai parametri $r$ e $f$ chiamati min radius e fixed radius che nella versione "standard" prendono i valori $r = 1/2$ e $f = 1$.

Ray marching

Oltre che per l'interesse in se ho voluto provare a disegnare il frattale Mandelbox perché è un soggetto ideale per applicare la tecnica del ray marching.

[...]

Le immagini in questa pagine (e questo video ↗ che puoi trovare nel mio canale YouTube) sono realizzate con questa tecnica.