This page provides links to various (hopefully) pretty images and videos of the Mandelbrot set that I computed with a program I wrote.
I computed three videos of continuous zooms into the Mandelbrot set: they follow exactly the same pattern, zooming at a constant rate of a factor 2 every two seconds toward fixed a center point, with the same color scheme. I haved tried to select the center points so as to illustrate how varied the Mandelbrot set can be by making sure that at least four or five wholly different “shapes” (depends how you count, of course) can be seen during the zoom. I also chose an accompanying music (from Musopen so that it be in the Public Domain) which I thought could adequately set the tone.
I have placed copies of the videos
on YouTube (see below for links
and embedded copies), because that might be simpler for many people to
view, but the quality (even in what YouTube calls high quality
)
is extremely poor and hardly does them justice, so I am also offering
high-quality downloads
using BitTorrent
(again, see below for links).
There are, of
course, dozens
of different videos of the kind on YouTube. I found, however,
that at least one of two things was true: that they don't go
very deep (such
as this one)
or that they don't show much of interest
(this one is
typical in this respect: it goes as far as 101000, so we're
supposed to say wow!
, but it is in fact staggeringly boring).
In certain videos, you can also spot places where the iteration bound
was clearly left too low. The probable reason for these limitations
is that people/programs either use native floats (which are typically
limited to 53 or 64 bits of precision, hence zoom depth—some
processors will do 113 bits, but they're not of the common, aka Intel,
variety) or else they use something like Mathematica to provide
arbitrary precision, in which case lack of time/patience prevents them
from going too far in iterations. Lastly, many videos have really bad
color schemes. However, I think a few videos stand
out: this one
and that one
are the best I could find, along
with the one
which inspired me to produce zooms of my own; but even these do not
show a great variety of shapes, hence my attempt to do
“better” (if I dare say so).
My program (see below) uses the GMP library for arbitrary precision floats, and I distributed computation on a pool of 30ish dual-core PC's, which ran for about one night to produce these videos. Actually, I computed a number of “key images” (one per second in the movie), at resolution 1024×768, each with a zoom factor of √2 over the previous, and then I interpolated them in a straightforward way (scaling/cropping them down as necessary and fading one image into the other to avoid brutal skips) to compute the frames that were fed to the video encoder.
The video resolution is 640×480 (or 640×360 for the YouTube version) with 25fps (but 30fps on YouTube, at their recommendation), the container format is AVI, the video codec is H.264 and the audio codec is MP3. I used ffmpeg to encode them (with x264 providing the H.264 codec).
The first video (of which the image on the right is a sample) is 4′14″ long (actually 4′12″ on YouTube because it lacks the final fadeout). It centers on the target point −0.9223327810370947027656057193752719757635 +0.3102598350874576432708737495917724836010i and zooms to a factor of 2123.5 or 1.5×1037. It is perhaps not as varied as the second video, but it is a little longer. The music is an excerpt of one of Händel's harpsichord suites.
The YouTube version of the video is here (also embedded in small here on the right), but, once again, it is of extremely poor quality.
The high quality version is 64MB in size: here is
the torrent to
download it: you should pass this torrent file to a program such
as BitTorrent, Azureus Vuze, Deluge
or similar. If you cannot use BitTorrent (e.g., because some fascist
netadmin or ISP prohibits it, thinking that it is only
used for copyright infringement), you can download the video directly
by removing the .torrent
extension from the previous
link. (But please, try to use BitTorrent if you can!)
The high and narrow image on the left of this page is a kind of roadmap to this video, with the different zoom levels shown vertically. More accurately, it is a log map toward the target point (or, as some might say, a Mercator projection with the target point as South pole and complex ∞ as North pole); horizontally it is periodic and I have placed two periods side to side, whereas vertically it extends to infinity at the top and at the bottom, which corresponds to zooming infinitely far out or in, at a factor of exp(2π)≈535.5 for every size of a horizontal period. Horizontal lines (“parallels”) on the log map correspond to concentric circles around the target point, and vertical lines to radii emanating from it; and the anamorphosis preserves angles.
The second video is 3′09″ long. It centers on the target point −0.789374599271466936740382412558 +0.163089252677526719026415054868i and zooms to a factor of 291 or 2.5×1027. It is shorter than the second, but possibly more varied. The music is an excerpt of Schumann's Scenes from Childhood.
The YouTube version of the video is here (also embedded in small here on the right), but, as previously, it is of extremely poor quality.
The high quality version is 44MB in size: here is
the torrent to
download it: again, pass this file to a BitTorrent program or, if
you cannot, remove the .torrent
extension.
The third video is 3′41″ long. It centers on the target point −0.9230110468224410331799630273585336748656 +0.3103593603697618780906159981443973705961i and zooms to a factor of 2107 or 1.6×1032. It is not as varied as the first two, but possibly more “dramatic”. The music is an excerpt of Chopin's Étude op. 25 no. 12 in C minor.
The YouTube version of the video is here (also embedded in small here on the right), but, as previously, it is of extremely poor quality.
The high quality version is 46MB in size: here is
the torrent to
download it: again, pass this file to a BitTorrent program or, if
you cannot, remove the .torrent
extension.
The fourth video is 4′04″ long. It centers on the target point −1.477110786384222313461222586803179083557 +0.003322002718062184557764259218386616609i and zooms to a factor of 2118.5 or 4.7×1035. It is not nearly as varied as the other videos, quite the contrary, it goes through what one might describe as variations on a theme. The music is an excerpt of J. S. Bach's Aria Variata.
The YouTube version of the video is here (also embedded in small here on the right), but, as previously, it is of extremely poor quality.
The high quality version is 62MB in size: here is
the torrent to
download it: again, pass this file to a BitTorrent program or, if
you cannot, remove the .torrent
extension.
I have put in this Flickr set a number of still images of the Mandelbrot set which were computed using the same program. For each image, I have indicated in the description (and the PNG comments) what the center point coordinate and scale are. Note that Flickr does not have a way to specify that an image is in the Public Domain, so I chose the closest I could (Creative Commons Attribution), but I still put these images in the Public Domain (assuming I even have to do that—the Mandelbrot set, after all, is a mathematical fact that can no more be copyrighted than a circle).
The program I used to compute all the images can be downloaded from here, where its features are described in more detail. It is in the Public Domain, so you can play with it all you want.
What is drawn, as is usual for the Mandelbrot set, is (an approximation of) the electrostatic potential produced by the Mandelbrot set, which is basically a continuous interpolation of the escape time (the number of iterations it takes for the point to leave the circle of a certain radius). This is all quite well explained on Wikipedia, so I won't repeat it.
One thing which bears to be stated in more detail, however, is exactly how this is mapped to colors. Indeed, in the regions of the Mandelbrot set in which one typically wishes to zoom, the escape time of the points which do not belong to the Mandelbrot is not only very large (this means that the image is slow to compute), but also, because it is so large, it varies enormously across the image. A naïve approach to coloring—where the colors are chosen linearly with the escape time—will therefore rapidly lead to images where the colors vary so much from point to point that the whole thing looks like random noise (or, if it is heavily anti-aliased, just grey). One solution to this problem is to always map the interval of escape times found on the picture to the entire gamut of colors, but this is unsatisfactory for zoom animations (where it is disagreeable for the colors to vary with the zoom factor). Another solution is to compress the escape times with some concave function: here, a compromise must be reached between having too much compression (which will destroy render invisible the fine details connecting the bolder structures) and having too little (which will make the bolder structures look like white noise). I have chosen (as, I believe, fraqtive has) to take the square root of the escape time (the log function might also have been worth looking into) before mapping it to the color gradient (which also tries to reach a compromise between flattening out the fine details and varying too rapidly). So, essentially, regular changes in the color gradient correspond to a quadratic increase in the number of iterations.
The program doesn't do anti-aliasing (unfortunately).