Intriguing Shapes in Buddhabrot-like Fractals

Hello there,
Today, I’ve decided to play again with Mandelbrot fractals, and more precisely a specific type of rendering called Buddhabrot, which basically consists in computing the histogram of all complex values that appear in diverging sequences (read the Wikipedia page for more details about this technique, it’s quite simple to understand).

And I wondered if it was possible to generate Buddhabrot-type figures with fractals similar to Mandelbrot, but with a slightly modified formula used for computing the complex series at each point.

The “original” Mandelbrot serie is:

z_{n+1} = z_n^2 + c

where z is a complex number, with z_0 = 0 + 0i and c = x + iy is actually the coordinate of the current pixel for which the serie is computed (doing that for each pixel).

I’ve tried lot of different things, but I’ve found out that

z_{n+1} = z_n^p + c

with p\in\mathbb{R}^+, renders interesting things.

Particularly for p\in[1,2], you get really nice images, with various shapes in it.
It’s like looking at the clouds, you always see something interesting :slight_smile:
Here are a few crops of the images I’ve obtained, with the associated p:

  • p = 1.725. I see a woman crouching here (or a man with a beard).

  • p = 1.605. I see a kind of bear face here:

  • p = 1.74, here again, a angry bear with a kamikaze helmet !

  • p = 1.955, I see the silhouette of a man with a shaggy haircut and a crown :slight_smile:

  • p = 1.94, I see some kind of dragon head.

I haven’t included everything, because there are lots of other strange creatures in these fractal images.
Here is the G’MIC code to generate the images (beware, it’s quite long to compute!)

foo : skip "${1=2}"
  8192,8192,1,3
  100%,100%,1,1,":begin(
      const itermax = 256;
      seqX = vector(#itermax);
      seqY = vector(#itermax);
      const v0 = -1.5;
      const dv = 3;
    );

    z0 = v0 + dv*[ x/w,y/h ];
    z = [ 0,0 ]; c = z0; p = $1;

    for (iter = 0, iter<itermax && cabs(z)<=2, ++iter,
      (z^^=p)+=c;
      seqX[iter] = z[0];
      seqY[iter] = z[1];
    );

    iter<itermax?
      repeat(iter,k,
        X = round(((seqX[k]-=v0)*=w)/=dv);
        Y = round(((seqY[k]-=v0)*=h)/=dv);
        ++i(#0,X,Y,0,0);
        k<2*iter/3?++i(#0,X,Y,0,1);
        k<iter/3?++i(#0,X,Y,0,2);
      );

    iter<itermax?iter:0"
  rm.
  r2dx. 512 rotate. 90
  l. { s c + 1 log n 0,255 normalize_local 2 a c }

First argument of the function is the power p you want to use for the serie. Default is p = 2, which corresponds to the usual Mandelbrot/Buddhabrot case.

Maybe I’ll post some other shapes I see in these images.
Here is a video of the rendered images, from p = 1 to p = 6 (took 9h to render…)
It’s like a Big-Bang of a Fractal Galaxy.

7 Likes

beautiful to almost creepy as it morfs into a starfish shape as if alive.

Something like fractal-rorschak shapes.

David, please add this Buddhabrot-like fractals in gmic 3.3.4.