mathr / blog / #

Old Wood Dish

Old Wood Dish (2010) by James W. Morris

Old Wood Dish (2010) by James W. Morris is a fractal artwork, a zoomed-in view of part of the Mandelbrot set. The magnification factor of 10152 is quite shallow by today's standards, but in 2010 the perturbation and series approximation techniques for speeding up image generation had not yet been developed: this is a deep zoom for that era. Thankfully JWM's (now defunct) gallery included the parameter files, the image linked above is a high resolution re-creation in Kalle's Fraktaler, thanks to a parameter file conversion script I wrote. You can find out more about JWM's software MDZ and see more of his images on my mirror of part of his old website.

Old Wood Dish is an example of what would now be called "Julia morphing", using the property that zooming in towards baby Mandelbrot set islands doubles-up (and then quadruples, octuples, ...) the features you pass. This allows you to sculpt patterns, here the pattern has a tree structure.

Each baby Mandelbrot set islands has a positive integer associated to it: its period. Iteration of the center of its cardioid repeats with that period, returning to 0. Atom periods are "near miss" periods, where the iteration gets nearer to 0 than it ever did before. They indicate a nearby baby Mandelbrot set island (or child bulb) of that period. The atom periods of the center of Old Wood Dish are:

1, 2, 34, 70, 142, 286, 574, 862, 1438, 2878, 5758

One can see a pattern: 2 * 34 + 2 = 70; 2 * 70 + 2 = 142; 2 * 142 + 2 = 286. But this pattern is broken at the numbers highlighted: 2 * 574 + 2 = 1150 != 862.

Using Newton's root-finding method in one complex variable, one can find the nearby baby Mandelbrot sets with those periods. When zooming out, these eventually each become the lowest period island in the view in turn (higher periods are closer to the starting point), and the zoom level at which this happens is usually significant in terms of the decisions made when performing Julia morphing. These zoom levels (log base 10) for Old Wood Dish are:

0.114, 0.591, 4.69, 8.44, 14.0, 22.4, 30.8, 43.4, 66.6, 101, 152

and the successive ratios of these numbers are

5.15, 7.94, 1.79, 1.66, 1.59, 1.37, 1.40, 1.53, 1.52, 1.50

Repeated Julia morphing leads to these ratios tending to a constant (often 1.5), but the two numbers highlighted are clearly outside the curve: one can see that these correspond to the two mismatching periods. I'll have to ask him to see if this was intentional or an accident.

A list of atom domain periods is related to a concept called an internal address, which is an ascending list of the lowest periods of the hyperbolic components (cardioid-like or disk-like shapes) that you pass through along the filaments on the way to the target from the origin. An extension, angled internal addresses, removes the ambiguity of which way to turn (for example, there are two period 3 bulbs attached to the period 1 cardioid, they have internal angles 1/3 and 2/3). One can find angled internal addresses by converting from external angles, and one can find external angles by tracing rays outwards from a point towards infinity. The angled internal address of Old Wood Dish starts:

1 1/2 2 16/17 33 1/2 34 1/3 69 1/2 70 1/3 141 1/2 142 1/3 285 1/2 286 ...

and the pattern can be extended indefinitely by

... 1/3 (p-1) 1/2 p 1/3 (2p+1) 1/2 (2p+2) ...

The numerators of the angles in an angled internal address can be varied freely, so one can create a whole family of variations. Varying the 1/3 to 2/3 only changes the alignments of the decorations outside the tree structure, but varying 16/17 changes the shapes that tree is built from. Here are Old Wood Dish variations 1-16, with the irregular zoom pattern adjusted to a fully-regular zoom ending up with period 9214:

I found the center coordinates for these images by tracing external rays towards each period 9214 inner island. This took almost 5 hours wall-clock time with 16 threads in parallel (one for each ray). I then found the approximate view radius by atom domain size raised to the power of 1.125, multiplied by 10. These magic numbers were found by exploring shallower versions graphically. Using this radius I used Newton's method again, to find the pair of period 13820 minibrots at the first junctions near the center. I found these periods using KF-2.15.3's newly improved Newton zooming dialog. I used their locations to rotate and scale all the images for precise alignment. Animated it looks quite hypnotic I think:

animation based on Old Wood Dish (2010) by James W. Morris

Software used:

  • mandelbrot-numerics m-describe program and script to get rough idea of period structure;
  • mandelbrot-perturbator GTK program to explore the shallow layers and trace external rays to find external angles;
  • mandelbrot-symbolics Haskell library in GHCI REPL to convert (both directions) between external angles and angled internal addresses;
  • mandelbrot-numerics m-exray-in program to trace rays inwards given external angles;
  • mandelbrot-numerics m-nucleus program to find periodic root from ray end point;
  • mandelbrot-numerics m-domain-size program to find approximate view size;
  • kf-2.15.3 interactive Newton zooming dialog to find period of the first junction nodes;
  • custom code in C to align views, using mandelbrot-numerics library;
  • custom code in bash shell to combine everything into KFS+KFR files;
  • kf-2.15.3 command line mode to render each KFS+KFR to very large TIFF files;
  • ImageMagick convert program to downscale for anti-aliasing (PNG for web, and smaller GIFs);
  • gifsicle program to combine the 16 frames into 1 animated GIF.