Mandelbrot set images and videos

This page provides links to various (hopefully) pretty images and videos of the Mandelbrot set that I computed with a program I wrote.

Contents

[Mandelbrot set log map]

Zoom videos

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).

Technical notes

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).

Video number 1: a deep zoom

[Zoom inside the Mandelbrot set]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.

Video number 2: varied shapes

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.

Video number 3: dramatic tension

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.

Video number 4: variations on a theme

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.

Still images

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).

[Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set]
[Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set]
[Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set]
[Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set]
[Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set] [Zoom inside the Mandelbrot set]

The program, and the coloring

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).