![]() Click above to see more standard Mandelbrot images |
Click or drag above to blow up any region |
Clicking the left image above will take you to a
page with more typical Mandelbrot images. You can use the applet in the
upper right to find and render your own beautiful images. In these
traditional views you can see that the process simply involves
exploring a 2-dimensional image at arbitrally small scales. It's
amazing that this simple object seems to deliver unlimited beautiful
images, however their seem to be only a limited number of types of
images to be found in it. This may only be true down to the scales and
computational power reachable by modern computers. Regardless, many
people feel that the straight Mandelbrot formula is mostly tapped out
and have gone on to find other formulae that deliver new beautiful
forms. I questioned this assumption and have been exploring alternative
ways to view this venerated object in new ways.
We can start by realizing that the m-set is a 4D object. Each pixel in the standard m-set images are colored by computing the result of an iterative function where two of its four inputs are simply the X and Y coordinates of the pixel, and the other two inputs are simply zero. So how can we see the entire 4D object at once? Perhaps we can't but there are more ways than just examining a single 2D slice. One way is to look at lots of different slices. 2D images rendered the standard way but using a different pair of constant values other than {0,0} are called Julia Set renderings. We can think of them as slices parallel to the original Mandelbrot image plane. Notice that because this is a 4 dimensional formula, there two dimensions that are parallel to the Mandelbrot image plane. If the m-set were really only just a 3 dimensional object there would only be one perpendicular direction, and that would make the visualization process much simpler. Well, one thing we can do is to simply ignore one of the perpendicular directions and attempt to visualize the 3D result. This is simply one way of projecting 4D to 3D which is equivalent to how 3D objects can be projected into 2D photographs, or the way 3D computer models are displayed on 2D screens. The following image shows a rendering of the "surface" of such a 3D projection of the m-set.
![]() |
||
|
|
Click image for more 3D presentations of the M-Set |
You can sort of see rough outline of the familiar
Mandelbrot shape above facing to to the right. The standard 2D
Mandelbrot slice cuts through the middle of the above rendering and
would be black on the inside and various colors outside. The 3D surface
above separates all the black regions of dozens of closely spaced
slices from their colored regions. In other words, all points inside
this volume are inside the m-set and all points outside are not.
So 3D objects can be built from stacks of parallel
slices. We can also slice the object in other directions as well. The
applet at the top left has a drop-down box that lets you choose to
slice along any of the 6 major perpendicular planes that cut through
the origin.
Still, were not really dealing with all 4 dimensions
at the same time. Is this a hopeless goal? Not quite. I believe we'll
never be able to literally see in 4D with anything close to the same
ease that we see in 3D but there are some ways we can project all the 4
dimensional data onto meaningful 2D images and 3D rotations.
![]() |
||
|
|
Click above to learn about the Buddhabrot technique |
First lets begin with a new way of viewing the m-set. Clicking the image image above will take you to a page describing a variation on the standard way this object is viewed called the Buddhabrot technique. The important thing to remember here is that Buddhabrot images are not generated from a different fractal formula. They are generated from the standard Mandelbrot formula unchanged. In other words, we are still rendering the same old Mandelbrot object but the Buddhabrot technique just views this familiar fractal object in a new and equally natural way.
More recently I've realized that a natural extension to the Buddhabrot technique can produce
images from the
full
4D space. I call images using this extension "Buddhagrams" because
their relationship to standard buddhabrot images is something like the
relationship between photographs and holograms. When buddhagrams are
projected onto the standard Mandelbrot plane (i.e. where the 2 extra
dimensions are always initialized to 0), the resulting images mostly
resemble the first buddhabrot images. The cool thing about them is that
the buddhagrams retain the full 4D nature of the m-set object and can
be projected onto any 2D image planes out of the full 4D space.
![]() |
||
|
|
Click above to learn about the Buddhagram generalization |
Clicking the image above will take you to a
page describing this extension in greater deal and let you view an
image gallery showing buddhagrams projected onto each of the 6 major
planes.
Finally, if any buddhagram is projected onto a
series of planes rotated slightly from each other, buddhagram
animations can be produced much like how rotating holograms are
produced. Some of these rotations will look just like rotating 3D
clouds but other rotations will appear like clouds turning themselves
inside-out. When viewing a 4D rotation that appears to be simply a 3D
rotation it's easy think that you've mentally grasped the object and
that it is 3 dimensional. This is misleading because there are also other perfectly valid 4D rotations
that appear to show a completely different 3D object. So while looking
at several of these rotations, it's important to keep reminding
yourself that you are always looking at the same object, and that if
you could only hold them all in your head at the same time, you would
be approaching a correct mental grasp of the real 4D object in its
entirety. Below is a small rotating Buddhagram animation. Clicking on
it will take you to a page with with several larger animations you can
watch along with more detailed explanations.
Note to programmers: All the images here use a type of histogram equalization to to assign color indices to raw image data. I've included the C source code for one implementation of my color allocation algorithm here. Note that the actual color ramp used is unimportant. Any alternate color scheme can be substituted later and the fine details will always be preserved. The main thing to notice is that even though only 256 colors are being used, the large smooth areas of the image still show even the subtlest gradations of color.