In principle, Fred's Fractal Factory and Viewer can support many different kinds of fractal calculation. 

In fact, they only support Mandelbrot Escape Time and Julia Escape Time calculations in the current release. 


The Mandelbrot Escape Time calculation assigns a integer value labelled MandelEscapeTime(x, y) to each point in the (x, y) plane, where x and y are real numbers.

Consider the sequence of complex values Z with sequence index n:

  • Z(n+1) = Z(n)*Z(n) + C where Z(0) == (0, 0) and C == (x, y).

The cartesian magnitude of Z(n) which we designate as |Z(n)| is calculated iteratively for values of n = 1, 2, 3, .. MaxIterations:  

  • If on the q'th iteration we find that |Z(q)| > Escape Radius, then we assign q to MandelEscapeTime(x, y), which completes the calculation of MandelEscapeTime(x, y) .
  • If |Z(n)| <=  Escape Radius for all n in the range 1..MaxIterations, then MandelEscapeTime(x, y) is assigned MaxIterations .


Note that the vector (x, y) can be regarded as identical to the complex scalar (x + yi). This transformation is useful when calculating Z(n)*Z(n).


C == (x, y) varies from (Left X, Bottom Y) to (Left X +Fractal Range, Bottom Y + Fractal Range).

Each pixel in a calculated frame has an associated MandelEscapeTime which = MandelEscapeTime(x, y) where (x, y) is the location in Mandelbrot space corresponding to the pixel.


The lower left pixel in the zoom level 0 frame corresponds to (Left X, Bottom Y) in Mandelbrot space.

The zoom level 0 frame is 1000 pixels wide and high, and it corresponds to the full Fractal Range.

Adjacent pixels in the zoom level 0 frame correspond to locations in the (x, y) plane that differ by (Fractal Range)/1000 .

Adjacent pixels in the zoom level 1 frames correspond to points in the (x, y) plane that differ by (Fractal Range)/2000.


The canonical value that is usually used for Escape Radius is 2.0, but the Factory lets you set it to values ranging from 2.0 to 1000.0 .

The Factory allows you to set MaxIterations to values ranging from 1 to 65000.