# Fractals/MandelMachine

< Fractals

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

# DescriptionEdit

# codeEdit

- 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

# AlgorithmsEdit

## colorEdit

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 mappingEdit

"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 formatEdit

"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)