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.
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.