Fractals/MandelMachine

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Mandel Machine Mandel Machine is a highly efficient Mandelbrot set explorer developed by Botond Kósa.[1]


Description[edit]

code[edit]

  • the c++ part ( mm64.cpp ) is only to declare functions that are implemented in assembly language and the rest is in java.
  • FractalCanvas.java is the most important file


Algorithms[edit]

color[edit]

FractalCanvas.java line 1996 and further:

 if(itTransferFunction==1) ;
		else if(itTransferFunction==2) it = Math.sqrt(it+1);
	    else if(itTransferFunction==3) it = Math.cbrt(it+1);
	    else if(itTransferFunction==4) it = Math.sqrt(Math.sqrt(it+1));
	    else if(itTransferFunction==5) it = Math.log(it+1);
	    else if(itTransferFunction==6) it = Math.log(Math.log(it+1)+1);
	    else if(itTransferFunction==7) it = Math.atan(it);
		else it = -1;

Bump mapping[edit]

"bump mapping. It allows fake-3D visualization of subtle details previously hidden by the slow gradients in the palette.

Bump mapping is controlled by 3 parameters:

  • Direction of lighting (in degrees): specifies the angle of the simulated lighting. Surfaces facing the light are highlighted, the ones blocked from lighting are darkened.
  • Depth: controls how much the structures emerge from the background of slow gradients. Shallow depth causes a relief/emboss-like look. Greater depth values result in deeper valleys between structures (see the examples below).
  • Strength: controls the amount of color shift caused by highlights and shadows.

The parameters are continuously adjustable to give instant feedback." [2]

Data format[edit]

"The Mandel Machine MMIT compressed iteration data file format:

  • every datatype needs to be written in big endian notation.
  • The following streamed through a Deflater (raw zlib format)" Dinkydau[3]
<int 4 bytes> Program Version
<int 4 bytes> Canvas Width
<int 4 bytes> Canvas Height
<byte> Supersampling
<double> Magnification
<double> Rotation
<int 4 bytes> Number of coordinate digits represented by long ints
<long long array> array 2 times as long as the above int
<int 4 bytes> Iteration limit
<byte> Bytes per sample
<double> minimum iteration count
<double> granularity (equal to iterRange / (2^(bytes_per_sample*8) - 6), where iterRange is maxIt - minIt)
<int array> row by row encoded samples (one int value per pixel)

Doc[edit]

References[edit]

  1. Mandel Machine by Botond Kósa.
  2. fractalforums : mandel-machine -bump-mapping-and-improved-histogram-coloring-v1-3-10-is-available/
  3. fractalforums kfb-to-mmit-converter