Buddhabrot - parte 2
2019-10-22
(home)

Nel 2016 avevo scritto un programmino per disegnare il frattale Buddhabrot; i risultati facevano abbastanza schifo.

Oggi, invece di studiare per l’esame che ho dopodomani, ho deciso di capire perché i miei tentativi erano risultati in quello schifo lì - siccome ovviamente non trovavo più il codice originale, ho poi deciso di ricominciare da zero.

Il problema maggiore del Buddhabrot è che è lentissimo da disegnare, ben più lento del suo fratello minore. All’inizio ho pensato che avrei potuto scrivere un programma in C, partizionare il lavoro di rendering sui quattro core del mio portatile, e in men che non si dica mi sarei trovato con un bel frattale pronto da condividere con amici e parenti - poi mi sono ricordato del perché, se possibile, uno evita di scrivere programmi in C e preferisce linguaggi a più alto livello. Alla fine ho optato per il sempreverde Python.

A questo punto si prospettava un lungo e difficile lavoro di ricerca su come ottimizzare il rendering del nostro frattale. Stranamente, però, ho subito trovato sul webs una soluzione efficiente e interessante che sfrutta una versione semplificata dell’algoritmo di Matropolis-Hastings (che non avevo mai sentito prima).

Il risultato di un pomeriggio scarso di programmazione è qui di seguito, ed è semplicemente bellissimo.

Il Buddhabrot, generato via Python, tempo di rendering 20 minuti circa; vengono generate in parallelo 3 immagini, rispettivamente con parametro di fuga (aka. numero massimo di iterazioni possibili) 50, 500, 2500; ognuna è il risultato dello studio delle “traiettorie” di 10 milioni di punti. Ottimizzato mediante algoritmo di Metropolis-Hastings. L’effetto “nebulosa” è ottenuto con GIMP: ognuna delle 3 immagini rappresenta un canale RGB (non è necessario GIMP per ottenere questo effetto, ma farlo via codice avrebbe richiesto un po’ più tempo!)
Stessa immagine ma in bianco e nero!

Se anche tu adori i frattali il caos o i gattini mandami una electric missive a cvd00 chiocciola insicuri punto net e sarò la persona più felice del mondo!!!!!1