The Korumandelbrot 

Koru 12 small


Contents:

Thumbnails
Videos
The Mandelbrot Set
Distortions and Transforms
Texturing Techniques


All images produced using a homebrew C++ app.

Thumbnails:
(Click to embiggen)




Koru Spiral
Koru Spiral
1280×956 (435Kb)
Koru 2
Koru 2
1280×956 (227Kb)
Koru 3
Koru 3
1280×956 (339Kb)

Koru 4
Koru 4
1280×956 (409Kb)
Koru 5
Koru 5
1280×956 (573Kb)
Koru 6
Koru 6
1280×956 (352Kb)

Koru 7
Koru 7
1280×956 (391Kb)
Koru 8
Koru 8
1024×702 (254Kb)
Koru 9
Koru 9
1024×702 (273Kb)

Koru 10
Koru 10
1024×702 (292Kb)
Koru 11
Koru 11
1024×702 (107Kb)
Koru 12
Koru 12
1024×702 (146Kb)

Kowhaiwhai
Kowhaiwhai
1280×955 (533Kb)
Kowhaiwhai 2
Kowhaiwhai 2
1280×955 (530Kb)
Kowhaiwhai 3
Kowhaiwhai 3
1024×702 (363Kb)

Acknowledgement: Mangotipi Kowhaiwhai from Maori.org.nz


Crocodile Eyes 1
Crocodile Eyes 1
1024×702 (193Kb)
Crocodile Eyes 2
Crocodile Eyes 2
1024×702 (226Kb)
Crocodile Eyes 3
Crocodile Eyes 3
1024×702 (249Kb)

Crocodile Eyes 4
Crocodile Eyes 4
1024×702 (239Kb)
Crocodile Eyes 5
Crocodile Eyes 5
1024×702 (277Kb)
Crocodile Eyes 6
Crocodile Eyes 6
1024×702 (264Kb)

Crocodile Eyes 7
Crocodile Eyes 7
1024×702 (270Kb)
Crocodile Eyes 8
Crocodile Eyes 8
1024×702 (256Kb)
Crocodile Eyes 9
Crocodile Eyes 9
1024×702 (268Kb)

Womb
Womb
702×702 (139Kb)

The Mandelborat Set
The Mandelborat Set
1024×702 (184Kb)

Enlightened Evolution
Enlightened Evolution
543×547 (101Kb)

Plato 1
Plato 1
1024×702 (254Kb)
Plato 2
Plato 2
1024×702 (259Kb)
Plato 3
Plato 3
1024×702 (315Kb)

Money 1
Money 1
1280×955 (317Kb)
Money 2
Money 2
1280×955 (310Kb)
Money 3
Money 3
1280×955 (341Kb)

Paisley
Paisley
1280×956 (438Kb)
Paisley 2
Paisley 2
1280×956 (447Kb)
Paisley 3
Paisley 3
1280×956 (340Kb)

Paisley 4
Paisley 4
1280×956 (503Kb)

Mandelplasma
Mandelplasma
1280×956 (247Kb)
Mandelplasma 2
Mandelplasma 2
1280×956 (277Kb)

Mandelbrot Tree 1
Mandelbrot Tree 1
1024×702 (46Kb)
Mandelbrot Tree 2
Mandelbrot Tree 2
1024×702 (121Kb)
Mandelbrot Tree 3
Mandelbrot Tree 3
1024×702 (162Kb)

Mandelbrot Tree 4
Mandelbrot Tree 4
1024×702 (154Kb)
Mandelbrot Tree 5
Mandelbrot Tree 5
1024×702 (212Kb)
Mandelbrot Tree 6
Mandelbrot Tree 6
1024×702 (240Kb)

Mandelbrot Tree 7
Mandelbrot Tree 7
1024×702 (239Kb)
Mandelbrot Tree 8
Mandelbrot Tree 8
1024×702 (269Kb)
Mandelbrot Tree 9
Mandelbrot Tree 9
1024×702 (232Kb)

Mandelbrot Tree 10
Mandelbrot Tree 10
1024×702 (240Kb)
Mandelbrot Tree 11
Mandelbrot Tree 11
1024×702 (166Kb)
Mandelbrot Tree 12
Mandelbrot Tree 12
1024×702 (140Kb)

Mandelbrot Tree 13
Mandelbrot Tree 13
1024×702 (163Kb)
Mandelbrot Tree 14
Mandelbrot Tree 14
1024×702 (313Kb)

Tree Spiral 0
Tree Spiral 0
1024×702 (208Kb)
Tree Spiral 1
Tree Spiral 1
1024×702 (232Kb)
Tree Spiral 2
Tree Spiral 2
1024×702 (277Kb)

Tree Spiral 3
Tree Spiral 3
1024×702 (303Kb)
Tree Spiral 4
Tree Spiral 4
1024×702 (321Kb)
Tree Spiral 5
Tree Spiral 5
1024×702 (317Kb)

Tree Spiral 6
Tree Spiral 6
1024×702 (319Kb)
Tree Spiral 7
Tree Spiral 7
1024×702 (319Kb)
Tree Spiral 8
Tree Spiral 8
1024×702 (289Kb)

Spiral Lantern 1
Spiral Lantern 1
1280×956 (61Kb)
Spiral Lantern 2
Spiral Lantern 2
1280×956 (60Kb)
Black and White 3
Black and White 3
1280×956 (57Kb)

Black and White 4
Black and White 4
1280×956 (67Kb)
Black and White 5
Black and White 5
1280×956 (117Kb)
Black and White 6
Black and White 6
1280×956 (125Kb)

Black and White 7
Black and White 7
1280×956 (96Kb)
Black and White 8
Black and White 8
1280×956 (68Kb)
Black and White 9
Black and White 9
1024×702 (289Kb)

Black and White 10
Black and White 10
1024×702 (159Kb)
Black and White 11
Black and White 11
1024×702 (263Kb)
Black and White 12
Black and White 12
1024×702 (143Kb)

Yggdrasil
Tree of Yggdrasil
800×702 (161Kb)

Videos:
(Right click link - "Save Target As" to save)

  • crocomandelzoom.mpg - Zoom in on Mandelbrot Set textured using crocodile eyes texture.
  • mandel4small.mpg - Varying of Spin parameter through 1 complete rotation.
  • mandel5small.mpg - Varying of Real Spiral parameter from 0.75 through 1.25.
  • mandel6small.mpg - Varying of Spin parameter through 1 complete rotation, with camera locked on 0.25 + 0i.

Videos encoded using Avidemux 2


The Mandelbrot Set:

The Mandelbrot Set is a mathematical figure called a fractal, which is a geometrical form that looks self-similar at different scales. The set is named after Benoit Mandelbrot, the mathematician who discovered it in 1981. To compute the Mandelbrot Set, you have to use complex numbers, which are numbers consisting of a "real" part (a normal everyday number) and an "imaginary" part, which is made up of a real number multiplied by the special number i which is defined as the square root of -1. Because complex numbers have 2 components, you can graph them as two-dimensional points, using the real and imaginary parts as coordinates for the positions on the horizontal and vertical axes, respectively.

The Mandelbrot set is defined as the set of all complex numbers that do not tend to infinity when a particular equation is iteratively (repeatedly) applied to it. The most common equation used is:

zn+1 = zn2 + c

where c is the complex number that we are testing. z is also a complex number, which is initialised to zero (both real and imaginary parts) at the start of the sequence. If z moves outside a circle centered on the origin with a radius of 4, then c is considered to be "unstable" and is not part of the Mandelbrot Set. When rendering the set, the number of iterations that it takes for the sequence to move outside the circle is used to colour the point, giving a graduation of colours forming concentric coloured bands around the set, with one band per iteration.

If the sequence has not moved outside the circle after a certain number of iterations, then it is assumed to be inside the set and is rendered as a black pixel. Because only a finite number of iterations can be performed, and it is always possible that the sequence will spiral off to infinity at some point after you stop testing, any rendering of the Mandelbrot Set is an approximation to it's true form, however the approximation gets better and better the more iterations you do.

Links:

Wikipedia article on Fractals
Wikipedia article on the Mandelbrot Set
Benoit Mandelbrot's homepage
Mandelbrot Cosmology


Distortions and Transforms:

Although the most recognisable image of the Mandelbrot Set is the iconic "beetle" form produced by the zn+1 = zn2 + c equation, there is "a" Mandelbrot Set (as opposed to "the" Mandelbrot Set) for any iterative equation in the complex plane. By modifying the basic equation with a number of coefficients, rotations and other transforms it is possible to produce a wide variety of images, some of which are completely unrecognisable when compared to the "canonical" form, and others of which appear different, but obviously related.

By adding terms to the equation, we can add extra tweakable parameters to the image, allowing us to contort and manipulate it to produce a wide variety of images. These extra parameters can be thought of as extra dimensions, and each rendered image is effectively a 2-dimensional slice through the new higher-dimensional figure. One property of the Mandelbrot Set is that it is "connected" - each point within the set can be reached from all other points within the set without having to travel outside the set, i.e. there are no "islands" separate from the main body of the figure. When extra dimensions are added, certain 2D slices through the figure can produce what appear to be disconnected sets, however the set is still connected in higher dimensions, it's just not possible to get from all the points in the set that are visible on that 2D slice to all other points without leaving the 2D plane and travelling along other dimensions.

The extra parameters are added to the equation as transforms that are applied to z (which being a complex number consists of both a real and imaginary part) after each iteration. z is stored in memory as two double-precision floating point numbers. Some transforms operate on only one of the numbers, others (such as rotations) operate on both. The extra parameters are:

  • Real Spiral - A coefficient that is multiplied with the real part of z after each iteration to cause the value to spiral outwards logarithmically.
  • Imaginary Spiral - A coefficient that is multiplied with the imaginary part of z after each iteration to cause the value to spiral outwards logarithmically.
  • Spin - An angle in radians specifying a rotation about the origin in the complex plane to be applied to z after each iteration.
  • Real Offset - An offset to be applied to the real part of z after each iteration. This is value can be added into c after the first iteration.
  • Imaginary Offset - An offset to be applied to the imaginary part of z after each iteration. See above.
  • Real Spiral Centre - Together with the Imaginary Spiral Offset this specifies a point on the complex plane that is subtracted from z before applying the Real Spiral and Imaginary Spiral cooefficients, and then added afterwards. This effectively causes z to either spiral away from or towards (depending on whether the spiral values are greater than or less than 1) the point specified by these two values.
  • Imaginary Spiral Centre - see above.
  • Interpolation Value - After each iteration, zn is subtracted from zn+1 to give the difference between the current value and the last. The interpolation value is used to set z to a value part-way in between the two values. The default value is 1, which has no effect. Setting the interpolation value to -1 causes the point to move in the opposite direction.
Any of these parameters can be varied to rotate, expand, contract or otherwise distort the basic Mandelbrot figure. It is also possible to vary these values along the horizontal or vertical screen axes while holding c constant to produce different images. If the Spin value is varied with either Screen X or Screen Y, a repeating figure is produced (because the sine and cosine functions that are used to perform the rotation are periodic).

For some images (e.g. Koru 6 & 7) I tried varying parameters such as the Spin value every iteration. This produced some fairly random-looking images resembling island peninsulas with reef formations that (untextured) might be able to be used as height-fields for fractal landscapes.


Texturing Techniques:

To texture the images, I loaded in a bitmap image to use as a motif, and performed a texture lookup into the bitmap for each "escapee" pixel, using the last value of z before the point left the boundary circle as the texture coordinate. To give a meaningful texture mapping, it was necessary to first convert z into polar coordinates (specifying the angle and distance from the origin of z on the complex plane). The coordinates were then offset and normalised to give values between 0 and 1, and then clamped before being used to lookup the texel.

The texel RGB colour value was then modulated with a colour value generated using the number of iterations that it took for the point to escape the boundary circle. I used a simple Hue/Saturation/Value formula, rotating the Hue angle by 10 degrees for each iteration (to create a colour scale that cycles every 36 iterations). The Saturation value was gradually decreased from 1 (and the brightness increased) as the number of iterations increased, so that the colours fade to white as you go deeper and deeper into the set. For some images, I mirrored the texture horizontally for each alternate iteration, for a bit of visual variety. Without this operation, the coordinates produced are oriented in the same (clockwise) direction for each iteration. I also experimented with using several textures, and cycling through them each iteration (see Money 1-3)

For each iteration, the number of times that the texture "tiles" around the boundary of the set doubles (this is due to the power of 2 in the zn+1 = zn2 + c equation). I was able to exploit this property to produce a tree-like visualisation of the set by adding together several sine waves based on the polar co-ordinates of the point before it escaped the circle and then rendering all pixels below a certain "cut-off" value as black. This rendering scheme was used to create the 10 "Mandelbrot Tree" images, which show the number of branches in the tree doubling each iteration as you go further into the set. You can think of the tree branches as forming a canopy that covers the complex plane, with the holes in the canopy representing the points that are in the Mandelbrot Set.

When rendering spiral forms within the Mandelbrot Set, the branching pattern of the tree branches corresponds to the number of arms of the spiral. For example, if you trace along the centre of one of the arms of an anti-clockwise 4-armed spiral, you will branch left, then right, then right, then right, as you progress further into the tree structure (clockwise spirals will branch in the opposite direction). Single-armed spirals seem to be an exception to this rule, and can branch either left, right, left, right, or right, right, right, right or left, left, left, left.

To make the images less noisy, and to anti-alias the texture-mapping, I rendered the images at 4 times the final horizontal and vertical resolutions and then scaled them down, taking the average of each block of 4 × 4 pixels to yield the final anti-aliased pixel value.

More examples of textured fractals:

Makin' Magic Fractals
Coloring the Mandelbrot Set with Textures
Andart - Decorating the Mandelbrot Exterior
Fractal Escher tesselations (I) (II)


More Fractals (link to another page on this site)

Return to Index

 - Chris. (email: enzedblue@quicksilver.net.nz)

stats count