On this forum I had been discussing binocular stereoscopic fractals, and the need for an added dimension with which to give height to the image.
I decided to go looking, and one study was of the Julia sets - which I have finally understood to be Mandelbrot, but with a fixed vector. Mandelbrot is
Z <- Z*Z + Z0, where Z
0 is the X-Y co-ordinate pair of the pixel under evaluation. Julia is
Z <- Z*Z + ZJ, where Z
J is some vector, the Julia vector, fixed throughout the image, chosen by the fractalist. That was of no use in the search for a dimension.
I decided to modify my machine-code programs for random-access rendering. Mandelbrot and Julia images are normally plotted one pixel at a time, row by row. They only need sequential access. However, instead of delivering the pixels sequentially to disk, I deliberately arranged for my programs to write to RAM first, and only write to disk when finished. This simplifies random access.
Normally, the pixel column- and row-numbers are converted to fractional numbers for the arithmetic. With my random access plotting, those fractional numbers are converted back to column and row.
The first position of the pixels of a Mandelbrot set is its allotted space. Each pixel has its own bounds:
That image was made with
http://wehner.org/tools/fractals/position/pos01.asm So the plotting system has been shown to give a perfectly standard Mandelbrot image. It seems to be correct.
After a dot has been "swung and flung" by the Mandelbrot formula
Z <- Z2 + Z0 (where Z <- Z
2 swings the dot about according to de Moivre's theorem and Z
0 flings it through the vector of the pixel) it lands in an unfamiliar place. No bounds have been reserved for it - so there may be contention for space, and the final appearance may vary with the way it was made. Left-to-right analysis might give a different result to right-to-left, at least in some minor degree.
However, here is the Mandelbrot set rendered not onto the original grid but on the places those grid-locations were swung and flung to:
The source code is at
http://wehner.org/tools/fractals/position/pos02.asm .
Here is the result after two swings and flings:
The source code is at
http://wehner.org/tools/fractals/position/pos03.asm .
... and after three:
The source code is at
http://wehner.org/tools/fractals/position/pos04.asm .
.... and after four:
The source code is at
http://wehner.org/tools/fractals/position/pos05.asm .
.... and after 255:
The source code is at
http://wehner.org/tools/fractals/position/pos255.asm .
Throughout this study, whilst being satisfied with the images, I was disturbed by the straight and curved lines. Are these artefacts of the mathematics, or of the algorithm? It turns out that they are due to a moir interaction of a hidden reseau, or grid, within the fractal, and the pixel array from which it came.
I carried out a study of grid-buckling during Mandelbrot evaluation. Here is the original grid:
The source is at
http://wehner.org/tools/fractals/moire/moi01.asmAfter one "swing and fling" it distorts to this:
The source code is at
http://wehner.org/tools/fractals/moire/moi02.asmThen it distorts to this:
This source code is at
http://wehner.org/tools/fractals/moire/moi03.asmI am a little disappointed that the bottoms of the images are not completely clean, but they clearly display the moir effect in random-access plotting of fractals.
Charles