Buddhabrot

TheBuddhabrotis the probability distribution over the trajectories of points that escape theMandelbrot fractal. Its name reflects itspareidolicresemblance to classical depictions ofGautama Buddha, seated in a meditation pose with a forehead mark (tika), a traditional oval crown (ushnisha), and ringlet of hair.
TheBuddhabrotrendering technique was discovered by Melinda Green,who later described it in a 1993Usenetpost to sci.fractals.
Previous researchers had come very close to finding the precise Buddhabrot technique. In 1988, Linas Vepstas relayed similar imagestoCliff Pickoverfor inclusion in Pickover's then-forthcoming bookComputers, Pattern, Chaos, and Beauty. This led directly to the discovery ofPickover stalks. Noel Griffin also implemented this idea in the 1993 "Mandelcloud" option in theFractintrenderer. However, these researchers did not filter out non-escaping trajectories required to produce the ghostly forms reminiscent of Hindu art. The inverse, "Anti-Buddhabrot" filter produces images similar to no filtering.
Green first named this pattern Ganesh, since an Indian co-worker "instantly recognized it as the god 'Ganesha' which is the one with the head of an elephant."The nameBuddhabrotwas coined later by Lori Gardi.
Mathematically, the Mandelbrot set consists of thesetof pointsc{\displaystyle c}in thecomplex planefor which theiterativelydefinedsequence
zn+1=zn2+c{\displaystyle z_{n+1}=z_{n}^{2}+c}
doesnottend toinfinityasn{\displaystyle n}goes to infinity forz0=0{\displaystyle z_{0}=0}.
TheBuddhabrotimage can be constructed by first creating a 2-dimensionalarrayof boxes, each corresponding to a final pixel in the image.  Each box(i,j){\displaystyle (i,j)}fori=1,…,m{\displaystyle i=1,\ldots ,m}andj=1,…,n{\displaystyle j=1,\ldots ,n}has size in complex coordinates ofΔx{\displaystyle \Delta x}andΔy{\displaystyle \Delta y}, whereΔx=w/m{\displaystyle \Delta x=w/m}andΔy=h/n{\displaystyle \Delta y=h/n}for an image of widthw{\displaystyle w}and heighth{\displaystyle h}.  For each box, a corresponding counter is initialized to zero.  Next, a random sampling ofc{\displaystyle c}points are iterated through the Mandelbrot function.  For points whichdoescape within a chosen maximum number of iterations, and therefore arenotin the Mandelbrot set, the counter for each box entered during the escape to infinity is incremented by 1.  In other words, for each sequence corresponding toc{\displaystyle c}that escapes, for each pointzn{\displaystyle z_{n}}during the escape, the box that(Re(zn),Im(zn)){\displaystyle ({\text{Re}}(z_{n}),{\text{Im}}(z_{n}))}lies within is incremented by 1.  Points which do not escape within the maximum number of iterations (and considered to be in the Mandelbrot set) are discarded.  After a large number ofc{\displaystyle c}values have been iterated,grayscaleshades are then chosen based on the distribution of values recorded in the array. The result is a density plot highlighting regions wherezn{\displaystyle z_{n}}values spend the most time on their way to infinity.
RenderingBuddhabrotimages is typically more computationally intensive than standard Mandelbrot rendering techniques. This is partly due to requiring more random points to be iterated than pixels in the image in order to build up a sharp image. Rendering highly zoomed areas requires even more computation than for standard Mandelbrot images in which a given pixel can be computed directly regardless of zoom level. Conversely, a pixel in a zoomed region of a Buddhabrot image can be affected by initial points from regions far outside the one being rendered. Without resorting to more complex probabilistic techniques,rendering zoomed portions ofBuddhabrotconsists of merely cropping a large full sized rendering.
The maximum number of iterations chosen affects the image – higher values give sparser more detailed appearance, as a few of the points pass through a large number of pixels before they escape, resulting in their paths being more prominent. If a lower maximum was used, these points would not escape in time and would be regarded as not escaping at all. The number of samples chosen also affects the image as not only do higher sample counts reduce the noise of the image, they can reduce the visibility of slowly moving points and small attractors, which can show up as visible streaks in a rendering of lower sample count. Some of these streaks are visible in the 1,000,000 iteration image below.
Green later realized that this provided a natural way to create color Buddhabrot images by taking three suchgrayscaleimages, differing only by the maximum number of iterations used, and combining them into a single color image using the same method used by astronomers to createfalse colorimages of nebula and other celestial objects. For example, one could assign a 2,000 max iteration image to the red channel, a 200 max iteration image to the green channel, and a 20 max iteration image to the blue channel of an image in anRGB color space. Some have labelled Buddhabrot images using this techniqueNebulabrots.
The relationship between theMandelbrot setas defined by the iterationz2+c{\displaystyle z^{2}+c}, and thelogistic mapλx(1−x){\displaystyle \lambda x(1-x)}is well known. The two are related by the quadratic transformation:
cr=λ(2−λ)4ci=0zr=−λ(2x−1)2zi=0{\displaystyle {\begin{aligned}c_{r}&={\frac {\lambda (2-\lambda )}{4}}\\c_{i}&=0\\z_{r}&=-{\frac {\lambda (2x-1)}{2}}\\z_{i}&=0\end{aligned}}}
The traditional way of illustrating this relationship is aligning the logistic map and the Mandelbrot set through the relation betweencr{\displaystyle c_{r}}andλ{\displaystyle \lambda }, using a common x-axis and a different y-axis, showing a one-dimensional relationship.
Melinda Green discovered that the Anti-Buddhabrot paradigm fully integrates the logistic map. Both are based on tracing paths from non-escaping points, iterated from a (random) starting point, and the iteration functions are related by the transformation given above.  It is then easy to see that the Anti-Buddhabrot forz2+c{\displaystyle z^{2}+c}, plotting paths withc=(random,0){\displaystyle c=({\text{random}},0)}andz0=(0,0){\displaystyle z_{0}=(0,0)}, simply generates the logistic map  in the plane{cr,zr}{\displaystyle \{c_{r},z_{r}\}}, when using the given transformation. For rendering purposes we usez0=(random,0){\displaystyle z_{0}=({\text{random}},0)}. In the logistic map, allzr0{\displaystyle z_{r0}}ultimately generate the same path.
Because both the Mandelbrot set and the logistic map are an integral part of the Anti-Buddhabrot we can now show a 3D relationship between both, using the 3D axes{cr,ci,zr}{\displaystyle \{c_{r},c_{i},z_{r}\}}. The animation shows the classic Anti-Buddhabrot withc=(random,random){\displaystyle c=({\text{random}},{\text{random}})}andz0=(0,0){\displaystyle z_{0}=(0,0)}, this is the 2D Mandelbrot set in the plane{cr,ci}{\displaystyle \{c_{r},c_{i}\}}, and also the Anti-Buddhabrot withc=(random,0){\displaystyle c=({\text{random}},0)}andz0=(0,0){\displaystyle z_{0}=(0,0)}, this is the 2D logistic map in the plane{cr,zr}{\displaystyle \{c_{r},z_{r}\}}. We rotate the plane{ci,zr}{\displaystyle \{c_{i},z_{r}\}}around thecr{\displaystyle c_{r}}-axis, first showing{cr,ci}{\displaystyle \{c_{r},c_{i}\}}, then rotating 90° to show{cr,zr}{\displaystyle \{c_{r},z_{r}\}}, then rotating an extra 90° to show{cr,−ci}{\displaystyle \{c_{r},-c_{i}\}}. We could rotate an extra 180° but this gives the same images, mirrored around thecr{\displaystyle c_{r}}-axis.
The logistic map Anti-Buddhabrot is in fact a subset of the classic Anti-Buddhabrot, situated in the plane{cr,zr}{\displaystyle \{c_{r},z_{r}\}}(orci=0{\displaystyle c_{i}=0}) of 3D{cr,ci,zr}{\displaystyle \{c_{r},c_{i},z_{r}\}}, perpendicular to the plane{cr,ci}{\displaystyle \{c_{r},c_{i}\}}. We emphasize this by showing briefly, at 90° rotation, only the projected planeci=0{\displaystyle c_{i}=0}, not 'disturbed' by the projections of the planes with non-zeroci{\displaystyle c_{i}}.