Table of Contents

Name

buddha - a minimalist buddhabrot renderer

Synopsis

buddha [options]

Description

buddha renders buddhabrot to a PNG image. Buddhabrot is an interesting mandelbrot rendering technique discovered by Melinda Green in 1993. It involves tracing the path of escaping points on the complex plane (i.e. points not in the mandelbrot set), and coloring each point based on the number of paths that land on it. The result is a unusual and often quite stunning image.

Options

-o FILE, --output=FILE
Output the image to FILE. (default: out.png)
-w NUM, --width=NUM
Output the image with the NUM width. For an unstretched image, this should be 3/2 of height. (default: 600)
-h NUM, --height=NUM
Output the image with NUM height. For an unstretched image, this should be 2/3 of height. (default: 400)
-q NUM, --multiplier=NUM
Uses NUM^2 subsamples for each pixel. Setting NUM increases the quality of the image, but also exponentially increases the time and memory used to render it. Somewhere around 10-15 and there in no longer a visible difference. Note that this can also have an unpredictable effect when doing some more exotic renders (e.g. only rendering very slow escaping points). (default: 2)
-z NUM, --zoom=NUM
Zooms in or out by a factor of NUM. This is safe, but currently not "fully" implemented. (default: 1.0)
-x NUM
Centers the image at x (real) coordinate of NUM. (default: -0.5)
-y NUM
Centers the image at the y (imaginary) coordinate of NUM. (default: 0.0)
-l LOW-HIGH, --limit=LOW-HIGH
Only renders points that escape in M iterations, where LOW <= M <= HIGH. This is the equivalent of separately setting r, g, and b to the same value. (default: 0-1000)
-r LOW-HIGH, --red=LOW-HIGH
Renders points that escape in the given range in red. (default: 0-1000)
-g LOW-HIGH, --green=LOW-HIGH
Renders points that escape in the given range in green. (default: 0-1000)
-b LOW-HIGH, --blue=LOW-HIGH
Renders points that escape in the given range in blue. (default: 0-1000)
-RgP NUM
Scale the red component by the given factor. (default: 20.0)
-GgP NUM
Scale the green component by the given factor. (default: 20.0)
-BgP NUM
Scale the blue component by the given factor. (default: 20.0)
-i NUM, --intensity=NUM
Scale the accumulators by a factor of NUM. the equivalent of setting the individual component scalars to the same value. (default: 20.0)
-a, --anti
Generates an "anti-buddhabrot". Converging points, rather than diverging points, are rendered, creating a different sort of image. This generally takes longer to render than traditional buddhabrot.
-t
Uses an alternate coloring method in which accumulators are incremented on every hop within the limit. Rather than the default: accumulating on every hop only if it converges within the limit.
-c FUNC, --incr=FUNC
Increments points using the the function FUNC. Where FUNC is one of the following:

one -- increment by one on each iteration (the default)
min -- increment by the the min amount
rand -- increment by an random amount between min and max
row -- increment so that min evenly distributed rows are rendered
col --
increment so than min evenly distributed columns are rendered
--min=NUM
Sets the minimum increment to NUM. What this actually means depends on the increment function being used, which is specified with the --incr option. By default, this changes nothing. (default: 1)
--max=NUM
Sets the maximum increment to NUM. What this actually means depends on the increment function being used, which is specified with the --incr option. By default, this changes nothing. (default: 10)
-M FILE, --meta=FILE
Embeds the file named FILE in the rendered PNG’s metadata. This is useful if you are hacking the source. Embedding the source code ensures that any interesting images will be able rendered again, even if you forgot how you did it.
-H, --help
Prints the basic usage information. Essentially a less detailed form of this document.

Examples

A few pretty examples to get you started:

buddha -q 10 -l 0-10000
The classic buddhabrot rendered with good detail.

buddha -q 1 -l 6500-35000 -w 600 -h 400 -i 50
Renders only slowly escaping points.

buddha -q 10 -l 0-25 -i 40
Renders only quickly escaping points.

buddha -q 100 -c row --min 50 -l 0-200 -i 10000
A very interesting technique that results in a pattern a intersecting curves.

Bugs

Zoom currently does not have support for fully rendering zoomed in areas. Only points in the region being rendered are traced, resulting in an incomplete render.

For zoomed out areas, only a certain radius from the origin is rendered. Highly zoomed out renders may by "cut-off" as a result.

Further Reading

If you are interested in buddhabrot, a good place to start is the website of its inventor:

http://www.superliminal.com/fractals/bbrot/bbrot.htm

Author

Written by Daniel Jones.

Reporting Bugs

Please report any issues or suggestions to: DanielCJones@gmail.com


Table of Contents