Jump to content

Buddhabrot: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Rendering method: General clarifications
Line 16: Line 16:
:<math>z_{n+1} = {z_n}^2 + c</math>
:<math>z_{n+1} = {z_n}^2 + c</math>


with ''z''<sub>0</sub> = 0 does ''not'' tend to [[infinity]].
where ''z''<sub>0</sub> = 0 does ''not'' tend to [[infinity]].


However, the ''Buddhabrot'' is rendered by creating a 2-[[dimension]]al [[array]] of counters, each counter corresponding to the final pixel of the image. Then, a random (or, alternately, an evenly spaced) sampling of points ''c'' is iterated through the Mandelbrot function. For points which '''do''' escape within a chosen number of iterations, and are thus '''not''' in the Mandelbrot set, their values are sent through the Mandelbrot function again and this time every counter that is hit by ''z'' value as it is iterated is incremented by 1. After a large number of values ''c'' have been iterated, image colors (or color saturation/brightness) are then chosen based on the values recorded in the array.
The ''Buddhabrot'' is rendered by first creating a 2-[[dimension]]al [[array]] of counters, each counter corresponding to a final pixel of the image and initialized to zero. Then, a random sampling of ''c'' points are iterated through the Mandelbrot function. For points which '''do''' escape within a chosen number of iterations, and therefore '''not''' in the Mandelbrot set, their values are sent through the Mandelbrot function again and this time every counter that is hit by ''z'' value as they are iterated is incremented by 1 for each hit. After a large number of ''c'' values have been iterated, [[Gray_scale|grayscale]] shades are then chosen based on the values recorded in the array. The result is a density plot highlighting regions where ''z'' values spend the most time on their way to infinity.


[[Image:nebulabrot.jpg|thumb|''Nebulabrot'']]
[[Image:nebulabrot.jpg|thumb|''Nebulabrot'']]

Revision as of 18:15, 26 April 2009

Deeply iterated Buddhabrot

The Buddhabrot is a special rendering of the Mandelbrot set which, when traditionally oriented, resembles to some extent certain depictions of the Buddha. When viewed upside-down, it vaguely resembles a human face with large, triangular glasses or goggles over its eyes.

Discovery

The Buddhabrot rendering technique was discovered and later described in a 1993 Usenet post [1] to sci.fractals by Melinda Green

Previous researchers had come very close to finding the precise Buddhabrot technique. In 1988 Linas Vepstas relayed images of the Buddhabrot to Cliff Pickover for inclusion in Pickover's forthcoming book Computers, Pattern, Chaos, and Beauty. This led directly to the discovery of Pickover stalks. These researchers did not filter out non-escaping trajectories required to produce the ghostly forms typically reminiscent of Hindu art. Green first named it Ganesh, since an Indian co-worker "instantly recognized it as the god 'Ganesha' which is the one with the head of an elephant." The name Buddhabrot was coined later by Lori Gardi.

Buddhabrot showing only slow escapes
Buddhabrot in RGB

Rendering method

Mathematically, the Mandelbrot set consists of the set of points c in the complex number plane for which the iteratively defined sequence

where z0 = 0 does not tend to infinity.

The Buddhabrot is rendered by first creating a 2-dimensional array of counters, each counter corresponding to a final pixel of the image and initialized to zero. Then, a random sampling of c points are iterated through the Mandelbrot function. For points which do escape within a chosen number of iterations, and therefore not in the Mandelbrot set, their values are sent through the Mandelbrot function again and this time every counter that is hit by z value as they are iterated is incremented by 1 for each hit. After a large number of c values have been iterated, grayscale shades are then chosen based on the values recorded in the array. The result is a density plot highlighting regions where z values spend the most time on their way to infinity.

Nebulabrot

Nuances

Because rendering Buddhabrot involves potentially iterating twice over each sample (once to test if it escapes, and again to plot its path if it does), it is more computationally intensive than standard Mandlebrot rendering techniques. To add to this, rendering highly zoomed areas requires even more computation, as the path of an escaping point may enter the portion being rendered from outside. Without resorting to more complex probabilistic techniques, rendering zoomed portions of Buddhabrot consists of merely cropping a large full sized render.

The number of iterations chosen has a large effect on 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 number of iterations was used, these points would not escape in time and would be regarded as not escaping at all.

It is also possible to create a composite from three images with different numbers of iterations and different colours; for example, combining a red image with 2,000 iterations, a green image with 200, and a blue image with 20, a technique similar to how astronomers produce false-color images. Some have labelled this the Nebulabrot as it results in a very Nebula-like image.

Another technique which it is natural to consider is to plot the paths for points c which are in the Mandelbrot set; a sort of Anti-Buddhabrot.

Anti-Buddhabrot