What is a Mandelbrot zoom

name: //Thorsten.Förstemann/Labor

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /homepages/13/d110133045/htdocs/foerstemann/dokuwiki/inc/parser/handler.php on line 1458

Warning: Declaration of syntax_plugin_nbsp :: handle ($ aMatch, $ aState, $ aPos, & $ aHandler) should be compatible with DokuWiki_Syntax_Plugin :: handle ($ match, $ state, $ pos, Doku_Handler $ handler) in /homepages/13/d110133045/htdocs/foerstemann/dokuwiki/lib/plugins/nbsp/syntax.php on line 144

Warning: Declaration of syntax_plugin_nbsp :: render ($ aFormat, & $ aRenderer, $ aData) should be compatible with DokuWiki_Syntax_Plugin :: render ($ format, Doku_Renderer $ renderer, $ data) in /homepages/13/d110133045/htdocs/foerstemann/dokuwiki/lib/plugins/nbsp/syntax.php on line 170

Warning: Declaration of syntax_plugin_mathjax_protecttex :: render ($ mode, & $ renderer, $ data) should be compatible with DokuWiki_Syntax_Plugin :: render ($ format, Doku_Renderer $ renderer, $ data) in /homepages/13/d110133045/htdocs/foerstemann/dokuwiki/lib/plugins/mathjax/syntax/protecttex.php on line 141

Zooms into the amount of Mandelbrot are legion1), the logarithm log (x) is well known and the complex logarithm log (z) is notorious2).

The Mandelbrot set is part of the complex number plane. The complex logarithm maps the complex number level to itself. The following is about the image of the amount of Mandelbrot under the log (z) mapping and its application to Mandelbrot zooms.

To put it somewhat imprecisely, the complex logarithm corresponds in principle to a change in coordinates from Cartesian coordinates to polar coordinates in the complex plane of numbers.


  • Utilization of an optimal interpolation grid with Mandelbrotzooms (up to 100 times fewer grid points with similar image quality)
  • Utilization of symmetries of the Mandelbrot set to reduce the computational effort (the symmetry breaks are more beneficial for aesthetics)
  • Almost any level of antialiasing in the critical central area of ​​the zoom
  • Interactive Mandelbrot zoomer based on flex shaders3)

The log (z) transformation

Here are briefly some properties of the complex logarithm. The properties are studied using the example of the amount of Mandelbrot.

Consider a fixed center zoom b. The complex number plane z = x + iy is then mapped with f (z) = log (z - b). Figure 1 shows a section of the edge area of ​​the Mandelbrot set in the z-plane (circle) and in the log (z) -plane (background). The green circle corresponds to the green left edge of the picture. The green wedge corresponds to the green rectangle.

A clearer picture of the effect of the log (z) transformation can be obtained by viewing the zoom animation:

  1. A zoom in the z-plane corresponds to a shift in the x-direction in the log (z) -plane.
  2. A rotation in the z-plane corresponds to a shift in the y-direction in the log (z) -plane. The upper edge of Figure 1 fits seamlessly with the lower edge of the image. The distance between the edges is $ 2 {\ pi} i $.
  3. There is hardly any local difference between the image and the original. This is a typical property of conformal mapping4), which include the complex logarithm.

These properties of the complex logarithm are known from mathematics. Here they can be guessed without term reformulations.

Symmetry and symmetry breaking

Here are briefly some properties of the amount of Mandelbrot. The properties are studied using the example of the complex log (z) transformation.

As the zoom depth increases, there are areas in the z-plane with ever greater radial symmetry. In the log (z) plane this corresponds to a translation symmetry in the y direction. This can be seen nicely in the above film from 1:30 to 2:20. Figure 2 shows an example of a typical 8-symmetry.

If the symmetry is completely broken (1-symmetry), a Mandelbrot set appears again. If the symmetry is only partially broken (on 2-, 4- or 2n-Symmetry), this is how Julia fractals appear.

The symmetry calculations follow a fixed pattern. For example, the zoom depth is halved from partial calculation to partial calculation. By using this behavior one can force the occurrence of a 1-symmetry calculation or a Mandelbrot set for a certain zoom depth. This made it possible, for example, to score a 101000-Zoom with an amount of Mandelbrot to create exactly at the end5).

The interpolation grid

The properties of the Mandelbrot set and the log (z) transformation just presented complement each other. Using the log (z) transformation results in an efficient grid for calculating the Mandelbrot set, which is briefly presented below.

The right side of Figure 3 shows a log (z) raster that has been transformed back into the z-plane. After the above explanations it should come as no surprise that columns of the log (z) grid form concentric circles in the z-plane. With a zoom, the pixels on the concentric circles are optimally "recycled". The distance between the concentric circles should be roughly the same as the distance between the pixels on a circle.

The left part in Figure 3 shows how existing symmetries can be used. Using pixel recycling and symmetry, only the orange marked points have to be recalculated for each image.

In Figure 3, the concentric circles consist of 128 points. Values ​​from 400 are useful for Mandelbrot zooms. So only 400 / n pixels have to be calculated per image with n symmetry. Compare that with the corresponding 800 x 640, i.e. a good 400,000 pixels! Other interpolations may look a little better than the brute force approach.

In the outer areas of the image, the spacing of the grid becomes larger and larger. However, the speed of the pixels also increases due to the zoom. The resulting blurring can therefore be passed as motion blur.

In the middle of the image - where the gaze usually rests - the grid points are practically as close as you want: Anitaliasing is possible until the end - and that without significant additional effort.

Using this technique, I created some deep zooms with Mathematica:

link Zoom depth Pixels per circle description
youtube 101000 400 2D zoom
youtube 10333 1024 log (z) zoom
youtube 10333 400 2D zoom
youtube 10333 1024 3D / relief zoom

Interactive Mandelbrot zoomer

A rectangular part from the log (z) plane is therefore a very efficient way of statically recording information from a zoom in an image. If one lets the inverse transformation ez done by the GPU, so you can control zoom and rotation in real time.

With Pixelbender you can create appropriate shaders / kernels for Flex 6) that can be executed quickly enough on the appropriate hardware. I implemented two zooms with this technology and uploaded them for people who would like to run the downloaded code directly (X) and without a false bottom on their GPU:

A typical shader looks like this:

kernel zoomer {const float PI = 3.14159265; const float EU = 2.71828; parameter float translate ; parameter float rotate ; input image4 iImage1; input image4 iImage2; input image4 iImage3; input image4 iImage4; output float4 outputColor; void evaluatePixel () {float2 position = outCoord () - float2 (479.5,199.5); float2 tmp = outCoord (); tmp.y = abs (log (sqrt (pow (position.x, 2.0) + pow (position.y, 2.0)) / 510.0)) * 30.474; tmp.x = mod ((atan (position.x, position.y) / PI + 1.0) * 480.0, 958.5); position = tmp + float2 (rotate, translate); position.x = mod (position.x, 958.5) +1.0; if (position.y <398.5) {outputColor = sampleLinear (iImage1, position);} else if (position.y <797.0) {outputColor = sampleLinear (iImage2, position - float2 (0.0, 398.0));} else if (position .y <1199.5) {outputColor = sampleLinear (iImage3, position - float2 (0.0, 796.0));} else {outputColor = sampleLinear (iImage4, position - float2 (0.0, 1194.0));}}}
Last modified: 2015/09/11 12:00 by