Makin' Magic Formulas
for Ultra-Fractal help.
For MMF.ufm Version 2.0
by Dave Makin
(Makin' Magic at Fortunecity
or Lineone or Crosswinds)
makinmagic@themutual.net

A note on lighting the 3D fractals.

A little maths behind the Transpoly formula.

Choose the formula you require help for,
note that the most recent are FIRST:

MMFz Extrapolation#1
(see this for all the Extrapolations for the moment -
although the formulas vary, many parameters are the same)

MMFy F(x,y),G(x,y)#2
MMFx F(x,y),G(x,y)#1
MMFw Not Rotation
MMFv Derivative
The Solid 3D formulas (general)
MMFr Solid 3D Complex
MMFs Solid 3D Polynomials
MMFt Solid 3D Quaternions
MMFu Solid 3D Hypercomplex
MMFq The "Transpoly" formula
MMFp The "Trans" formula
MMFo J3D Corrected Hypercomplex
MMFn J3D Standard Hypercomplex (old)
MMFm J3D Standard Quaternion
MMFl M-True3D Userfriendly
MMFk M3D Userfriendly
MMFj M-Type True 3D
MMFi Two Cube Family
MMFh Mandelbrot 3D
MMFg 4D Transform
MMFf Two Square Family
MMFe Two Square 3
MMFd Two Square 2
MMFc Two Square 1
MMFb X Squared
MMFa Fastdraw

Extrapolation

These formulas are based on the extrapolation of a formula
taking the form "m*Fn2(Fn1(z)^p)+c" given z(0), z(1) and z(2).
There are three versions - a "Mandelbrot", an "Inverse" and
a "Julia". Note that the names Mandelbrot and Julia don't
really apply in a strictly mathematical sense as in all three
versions the formula actually iterated for a given pixel has
a variable "m" as well as "c". The "Julia" version is closest
to a true Julia in that start z, (z(0)), is #pixel.
As you'll see both the "Inverse" and the "Julia" forms produce
results that appear to have undergone a classical inversion
transformation, hence I've included the inversion transformation
as an option in all three versions.
In the Mandelbrot version z(0) and z(1) are set by user
parameters and z(2) is set to #pixel.
In the Inverse version z(0) and z(2) are set by user
parameters and z(1) is set to #pixel.
In the Julia version z(1) and z(2) are set by user
parameters and z(0) is set to #pixel.

1a and 1b. Values of z(n)
The first two parameters allow you to set the two values of
z(n) to be used with #pixel for the extrapolation.
The two parameters are z(1) and z(2) for the Mandelbrot,
z(0) and z(2) for the Inverse and z(1) and z(2) for the Julia.
2. Power
Allows you to set the power (exponent) used in the formula,
ie. p in m*Fn2(Fn1(z)^p)+c.
3. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
Note that for some of them only small values of the divergent
bailout will produce interesting results.
4. Bailout value
The standard "infinity" (ie. divergent) bailout value.
5. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
This will be necessary for some settings of Fn1 and Fn2.
6. Small Bailout
Here you can set the value used for testing for
convergence.
7. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
8. Translation
Translates (moves) the value of z on each iteration.
9. Matrix column 0
The values for the first column of the generic 2*2 transformation
matrix, set to (1,0) for the identity matrix.
10. Matrix column 1
The values for the second column of the generic 2*2 transformation
matrix, set to (0,1) for the identity matrix.
11. Iterate the sum
When enabled, the actual z value iterated is summed up with all
previous z values.
12. Self-rotation
When enabled z is rotated by atan2(z) at the start of each iteration.
Plus c does the same but also adds #pixel to the rotated value, it's
only here as it produces some interesting results.
13. Inversion
Performs an inversion transformation when enabled.
Use the Inversion Centre and Inversion Radius to control
the inversion.
14. Inversion centre
Sets the coordinates around which an inversion is performed.
Sets the radius for an inversion.
16. Function 1
Fn1 in "m*Fn2(Fn1(z)^p)+c". Some settings will produce convergence.
17. Function 2
Fn2 in "m*Fn2(Fn1(z)^p)+c". Some settings will produce convergence.

F(x,y),G(x,y)#2

This formula is based on the idea that a complex formula
to be iterated essentially has the form:
znew = F(x,y)+flip(G(x,y)) + c
where x and y are the real and imginary parts of z.
Hence here you can specify F(x,y) and G(x,y) where F()
and G() are polynomials in x and y.
You do this by explicitly setting the relevant coefficients
of the polynomial terms to the degree you have selected.
The formula includes the option of using presets for the
coefficients that produce the standard complex formula.
When the complex presets are enabled (default) the user
parameters for the coefficients are offsets from the presets
and small values produce interesting results.
When the complex presets are disabled the user parameters for
the coefficients specify the exact values of the coefficients.

1. Start z (Mandelbrot) or Julia seed
In the Mandelbrot version this is the perturbation of start z
and can be used to deform the fractal.
In the Julia version this is the Julia seed and can be used
to produce different Julia sets.
2. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
This will be necessary for some settings.
3. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
Note that for some of them only small values of the divergent
bailout will produce interesting results.
4. Bailout value
The standard "infinity" (ie. divergent) bailout value.
5. Small Bailout
Here you can set the value used for testing for
convergence.
6. Iterate the sum
When enabled, the actual z value iterated is summed up with all
previous z values.
7. Highest powers in x and y
Allows you to set the highest powers in x and y (degree)
used in F(x,y) and G(x,y).
8. Complex presets
If enabled then coefficient parameters of zero will produce
the standard z^n+c fractal where n is the selected highest power.
The coefficient parameters being used as offsets from the presets.
9. Self-rotation
When enabled z is rotated by atan2(z) at the start of each iteration.
Plus c does the same but also adds #pixel to the rotated value, it's
only here as it produces some interesting results.
10. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
11. Translation
Translates (moves) the value of z on each iteration.
12. Matrix column 0
The values for the first column of the generic 2*2 transformation
matrix, set to (1,0) for the identity matrix.
13. Matrix column 1
The values for the second column of the generic 2*2 transformation
matrix, set to (0,1) for the identity matrix.
14. Mu/Lambda version
Mu as f(z)+c, Lambda as c*f(z)+v or c*(f(z)+v),
inverted Mu as f(z)+1/c+v, inverted Lambda as
(1/c+v1)*f(z)+v plus inverted Mu as f(z)+1/c+c+v
and inverted Lambda as (1/c+c+v1)*f(z)+v.
15. Mu/Lambda v
Sets the value of v as used by some of the Mu/Lambda versions.
16. Mu/Lambda v1
Sets the value of v1 as used by some of the Mu/Lambda versions.

THE COEFFICIENTS:
For all the coefficients the real part sets the value in F()
to use for the calculation of the new x part of z and the
imaginary part sets the value in G() to use for calculation
of the new y part of z.

17. Coeffs of x
The coefficients of x in F(x,y) and G(x,y).
Used for all settings.
18. Coeffs of y
The coefficients of y in F(x,y) and G(x,y).
Used for all settings.
19. Coeffs of x^2
The coefficients of x^2 in F(x,y) and G(x,y).
Used if the Highest powers is 2 or higher.
20. Coeffs of xy
The coefficients of xy in F(x,y) and G(x,y).
Used if the Highest powers is 2 or higher.
21. Coeffs of y^2
The coefficients of y^2 in F(x,y) and G(x,y).
Used if the Highest powers is 2 or higher.
22. Coeffs of x^3
The coefficients of x^3 in F(x,y) and G(x,y).
Used if the Highest powers is 3 or higher.
23. Coeffs of x^2.y
The coefficients of x^2.y in F(x,y) and G(x,y).
Used if the Highest powers is 3 or higher.
24. Coeffs of x.y^2
The coefficients of x.y^2 in F(x,y) and G(x,y).
Used if the Highest powers is 3 or higher.
25. Coeffs of y^3
The coefficients of y^3 in F(x,y) and G(x,y).
Used if the Highest powers is 3 or higher.
26. Coeffs of x^4
The coefficients of x^4 in F(x,y) and G(x,y).
Used if the Highest powers is 4 or higher.
27. Coeffs of x^3.y
The coefficients of x^3.y in F(x,y) and G(x,y).
Used if the Highest powers is 4 or higher.
28. Coeffs of x^2.y^2
The coefficients of x^2.y^2 in F(x,y) and G(x,y).
Used if the Highest powers is 4 or higher.
29. Coeffs of x.y^3
The coefficients of x.y^3 in F(x,y) and G(x,y).
Used if the Highest powers is 4 or higher.
30. Coeffs of y^4
The coefficients of y^4 in F(x,y) and G(x,y).
Used if the Highest powers is 4 or higher.
31. Coeffs of x^5
The coefficients of x^5 in F(x,y) and G(x,y).
Used if the Highest powers is 5 or higher.
32. Coeffs of x^4.y
The coefficients of x^4.y in F(x,y) and G(x,y).
Used if the Highest powers is 5 or higher.
33. Coeffs of x^3.y^2
The coefficients of x^3.y^2 in F(x,y) and G(x,y).
Used if the Highest powers is 5 or higher.
34. Coeffs of x^2.y^3
The coefficients of x^2.y^3 in F(x,y) and G(x,y).
Used if the Highest powers is 5 or higher.
35. Coeffs of x.y^4
The coefficients of x.y^4 in F(x,y) and G(x,y).
Used if the Highest powers is 5 or higher.
36. Coeffs of y^5
The coefficients of y^5 in F(x,y) and G(x,y).
Used if the Highest powers is 5 or higher.
37. Coeffs of x^6
The coefficients of x^6 in F(x,y) and G(x,y).
Used if the Highest powers is 6.
38. Coeffs of x^5.y
The coefficients of x^5.y in F(x,y) and G(x,y).
Used if the Highest powers is 6.
39. Coeffs of x^4.y^2
The coefficients of x^4.y^2 in F(x,y) and G(x,y).
Used if the Highest powers is 6.
40. Coeffs of x^3.y^3
The coefficients of x^3.y^3 in F(x,y) and G(x,y).
Used if the Highest powers is 6.
41. Coeffs of x^2.y^4
The coefficients of x^2.y^4 in F(x,y) and G(x,y).
Used if the Highest powers is 6.
42. Coeffs of x.y^5
The coefficients of x.y^5 in F(x,y) and G(x,y).
Used if the Highest powers is 6.
43. Coeffs of y^6
The coefficients of y^6 in F(x,y) and G(x,y).
Used if the Highest powers is 6.
44. Overall function f1
Applied to the z value after calculation of F(x,y) and G(x,y).
Some settings will produce convergence.

F(x,y),G(x,y)#1

This formula is based on the idea that a complex formula
to be iterated essentially has the form:
znew = F(x,y)+flip(G(x,y)) + c
where x and y are the real and imginary parts of z.
Hence here you can specify F(x,y) and G(x,y) where F()
and G() are polynomials in x and y.
You do this by setting the constants An, Bn and Cn in the
expansion of (A0.x + B0.y + C0)(A1.x + B1.y + C1).....
The real values of the ABC's set the polynomial F() and the
imaginary values set the polynomial G(), you can choose up
to six brackets allowing a degree of 1 to 6.
The formula includes the option of using presets for the
ABC's that produce the standard complex formula.
When the complex presets are enabled the user parameters
for the ABC's are offsets from the presets and small values
produce interesting results.
When the complex presets are disabled (default) the user
parameters for the ABC's specify the exact values of
the ABC's. (It was necessary to make this the default to
ensure compatibility with an older release of the formula).

1. Start z (Mandelbrot) or Julia seed
In the Mandelbrot version this is the perturbation of start z
and can be used to deform the fractal.
In the Julia version this is the Julia seed and can be used
to produce different Julia sets.
2. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
This will be necessary for some settings.
3. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
Note that for some of them only small values of the divergent
bailout will produce interesting results.
4. Bailout value
The standard "infinity" (ie. divergent) bailout value.
5. Small Bailout
Here you can set the value used for testing for
convergence.
6. Iterate the sum
When enabled, the actual z value iterated is summed up with all
previous z values.
7. Highest powers in x and y
Sets the number of brackets of the form (Ax+By+C) to be
multiplied in the formula and hence the degree of F() and G().
8. Complex presets
If enabled then ABC parameters of zero will produce
the standard z^n+c fractal where n is the selected highest power.
The ABC parameters being used as offsets from the presets.
9. Use of #pixel
If set as the Extra constant then the pixel value is simply
added to the newly calculated z value, otherwise it is used to
replace the constant in the specified bracket.

THE ABC'S:
For all the ABC's, the real part of the parameter specifies
the value to be used in calculation of F() and the imaginary
part specifies the value to be used in calculation of G().

10. A1
The constant A in the first bracket (Ax+by+c).
Used in all cases.
11. B1
The constant B in the first bracket (ax+By+c).
Used in all cases.
12. C1
The constant C in the first bracket (ax+by+C).
Used in all cases except when replaced with #pixel.
13. A2
The constant A in the second bracket (Ax+by+c).
Used when Highest powers is 2 or more.
14. B2
The constant B in the second bracket (ax+By+c).
Used when Highest powers is 2 or more.
15. C2
The constant C in the second bracket (ax+by+C).
Used when Highest powers is 2 or more except when
replaced with #pixel.
16. A3
The constant A in the third bracket (Ax+by+c).
Used when Highest powers is 3 or more.
17. B3
The constant B in the third bracket (ax+By+c).
Used when Highest powers is 3 or more.
18. C3
The constant C in the third bracket (ax+by+C).
Used when Highest powers is 3 or more except when
replaced with #pixel.
19. A4
The constant A in the fourth bracket (Ax+by+c).
Used when Highest powers is 4 or more.
20. B4
The constant B in the fourth bracket (ax+By+c).
Used when Highest powers is 4 or more.
21. C4
The constant C in the fourth bracket (ax+by+C).
Used when Highest powers is 4 or more except when
replaced with #pixel.
22. A5
The constant A in the fifth bracket (Ax+by+c).
Used when Highest powers is 5 or more.
23. B5
The constant B in the fifth bracket (ax+By+c).
Used when Highest powers is 5 or more.
24. C5
The constant C in the fifth bracket (ax+by+C).
Used when Highest powers is 5 or more except when
replaced with #pixel.
25. A6
The constant A in the sixth bracket (Ax+by+c).
Used when Highest powers is 6.
26. B6
The constant B in the sixth bracket (ax+By+c).
Used when Highest powers is 6.
27. C6
The constant C in the sixth bracket (ax+by+C).
Used when Highest powers is 6 except when
replaced with #pixel.
28. Self-rotation
When enabled z is rotated by atan2(z) at the start of each iteration.
Plus c does the same but also adds #pixel to the rotated value, it's
only here as it produces some interesting results.
29. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
30. Translation
Translates (moves) the value of z on each iteration.
31. Matrix column 0
The values for the first column of the generic 2*2 transformation
matrix, set to (1,0) for the identity matrix.
32. Matrix column 1
The values for the second column of the generic 2*2 transformation
matrix, set to (0,1) for the identity matrix.
33. Mu/Lambda version
Mu as f(z)+c, Lambda as c*f(z)+v or c*(f(z)+v),
inverted Mu as f(z)+1/c+v, inverted Lambda as
(1/c+v1)*f(z)+v plus inverted Mu as f(z)+1/c+c+v
and inverted Lambda as (1/c+c+v1)*f(z)+v.
34. Mu/Lambda v
Sets the value of v as used by some of the Mu/Lambda versions.
35. Mu/Lambda v1
Sets the value of v1 as used by some of the Mu/Lambda versions.
36. Overall function f1
Applied to the z value after calculation of F(x,y) and G(x,y).
Some settings will produce convergence.

Not Rotation

The idea for this formula came from considering
the fact that calculating z^2 is effectively rotation
and scaling of z based on the value of z.
Since the rotation part of this can be done using the
2*2 rotation matrix involving sin and cos of atan2(z),
it struck me that this could be considered as involving
two functions and/or their derivatives so I decided to try
a formula loosely based on this idea, the functions being
real polynomials - ie. a selection from:
p'(x), p(x), q'(x), q(x) and p'(y), p(y), q'(y), q(y).
Since the idea is based on rotation I decided to call
the formula/method "Not Rotation".
In this case each complex parameter defines two real
roots, one used to define p'() and one q'().
The "complex" formula produced is:
f(z) = f(x + iy) = +/-a(x)+/-b(y) + flip(+/-c(x)+/-d(y))
or (Multiply) = +/-a(x)*b(y) + flip(+/-c(x)*d(y))
or ("Rotate1") = +/-x*a(x)+/-y*b(y) + flip(+/-x*c(x)+/-y*d(y))
or ("Rotate2") = +/-y*a(x)+/-x*b(y) + flip(+/-y*c(x)+/-x*d(y))
where a(x) and c(x) each may be defined as p(x), p'(x),
q(x) or q'(x), similarly b(y) and d(y) each may be
defined as p(y), p'(y), q(y) or q'(y).
Note that the Rotate1 version simply raises the powers of
the polynomials used by one - meaning there is no longer
a constant term when using p'() or q'().
Also note that the derivatives have been scaled so
the highest powers in p() and q() each have
coefficients of 1.

0. Julia seed (Julia version only)
Modify for different Julia sets.
1. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
This will be necessary for some settings.
2. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
Note that for some of them only small values of the divergent
bailout will produce interesting results.
3. Bailout value
The standard "infinity" (ie. divergent) bailout value.
4. Small Bailout
Here you can set the value used for testing for
convergence.
5. Degree of p'()
Sets the number of brackets of the form
(x or y - real(root)) to be multiplied to get p'(),
ie. determines the highest power of the derivative of
p() which will therefore be one power higher.
6. Degree of q'()
Sets the number of brackets of the form
(x or y - real(root)) to be multiplied to get q'(),
ie. determines the highest power of the derivative of
q() which will therefore be one power higher.
7. First Roots
The real part is a root of p'() and the imaginary a root
of q'(). The real part only has an effect if p'() or p()
is in use, the imaginary only if q'() or q() is in use.
8. Second Roots
The real part is a root of p'() if the degree of p'()
is at least quadratic, the imaginary part is a root
of q'() if the degree of q'() is at least quadratic.
The real part only has an effect if p'() or p() is in use,
the imaginary only if q'() or q() is in use.
9. Third Roots
The real part is a root of p'() if the degree of p'()
is at least cubic, the imaginary part is a root
of q'() if the degree of q'() is at least cubic.
The real part only has an effect if p'() or p() is in use,
the imaginary only if q'() or q() is in use.
10. Fourth Roots
The real part is a root of p'() if the degree of p'()
is quartic, the imaginary part is a root
of q'() if the degree of q'() is quartic.
The real part only has an effect if p'() or p() is in use,
the imaginary only if q'() or q() is in use.
11. First function
Allows you to choose a() in a(x)+b(y)+flip(c(x)+d(y)).
12. Second function
Allows you to choose b() in a(x)+b(y)+flip(c(x)+d(y)).
13. Third function
Allows you to choose c() in a(x)+b(y)+flip(c(x)+d(y)).
14. Fourth function
Allows you to choose d() in a(x)+b(y)+flip(c(x)+d(y)).
15. Variation
Allows you to choose the method of 'not-rotation'.
Original uses +/-a(x)+/-b(y) + flip(+/-c(x)+/-d(y)),
Multiply uses +/-a(x)*b(y) + flip(+/-c(x)*d(y)) and
'Rotate1' uses +/-x*a(x)+/-y*b(y) + flip(+/-x*c(x)+/-y*d(y))
'Rotate2' uses +/-y*a(x)+/-x*b(y) + flip(+/-y*c(x)+/-x*d(y))
16. Start z (Mandelbrot version only)
Specifies which root to use as Zstart, when a choice is
available (Degree > Linear).
17. Lambda version
If disabled then the normal f(z)+c is used,
when Enabled the lambda version c*f(z) is used,
the third option is an interesting alternative.
18. Iterate the sum
When enabled, the actual z value iterated is summed up with all
previous z values.
19. Extra multiply
When enabled p(z) is multiplied by f2(z). Note that
this will generally alter the highest power of z.
20. Self-rotation
When enabled z is rotated by atan2(z) at the start of each iteration.
Plus c does the same but also adds #pixel to the rotated value, it's
only here as it produces some interesting results.
21. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
22. Translation
Translates (moves) the value of z on each iteration.
23. Matrix column 0
The values for the first column of the generic 2*2 transformation
matrix, set to (1,0) for the identity matrix.
24. Matrix column 1
The values for the second column of the generic 2*2 transformation
matrix, set to (0,1) for the identity matrix.
25. Julia-switch offset
Use this to adjust the position of the Julia set you wish to
view using the switch function when it's off centre.
This should be reset to zero when you're on a Julia set.
26. Julia-switch scale
Use this adjust the scale of the Julia set you wish to view
using the switch function when it's too large or too small.
Use values >1.0 to zoom in and values 0 < v < 1.0 to zoom out.
This should be reset to 1.0 when you're on a Julia set.
27. Perturbation (Mandelbrot version only)
Perturbation of Zstart, use to deform the fractal.
28. Mandy-switch offset
Use this to adjust the position of the Mandelbrot set you wish to
view using the switch function when it's off centre.
This should be reset to zero when you're on a Mandelbrot set.
29. Mandy-switch scale
Use this adjust the scale of the Mandelbrot set you wish to view
using the switch function when it's too large or too small.
Use values >1.0 to zoom in and values 0 < v < 1.0 to zoom out.
This should be reset to 1.0 when you're on a Mandelbrot set.
30. Overall function f1
Applied to the whole polynomial ie. as f(z) = f1(p(z)).
31. Multiply function f2
Only used when Extra multiply is enabled. When in use
the equation used effectively becomes f(z) = f1(p(z)*f2(z)).

Derivative

Here's a formula that sets Zstart to a critical
value properly for a change (critical values
generally mean that the Mandelbrot-style formula
provides a reasonable map of the Julias).
By the parameters specifying the root/s of the
derivative, suitable values of zstart are known.
To produce the formula to iterate, the derivative
must be integrated, this is done by expansion of
brackets followed by integration.
Please note that the integrals have been scaled so
the highest power in p(z) has a coefficient of 1.
The possibilities for the base polynomial are:

Degree 1:
Derivative: (a = first root)
p'(z) = z - a
Integral (*2):
p(z) = z^2 - 2*az

Degree 2:
Derivative: (b = second root)
p'(z) = (z-a)(z-b) = z^2 - (a+b)z + ab
Integral (*3):
p(z) = z^3 - 3*(a+b)(z^2)/2 + 3*abz

Degree 3:
Derivative: (c = third root)
p'(z) = (z-a)(z-b)(z-c)
p'(z) = z^3 - (a+b+c)(z^2) + (ab+ac+bc)z - abc
Integral (*4):
p(z) = z^4 - 4*(a+b+c)(z^3)/3 + 2*(ab+ac+bc)(z^2) - 4*abcz

Degree 4:
Derivative: (d = fourth root)
p'(z) = (z-a)(z-b)(z-c)(z-d)
p'(z) = z^4 - (a+b+c+d)(z^3) + (ab+ac+ad+bc+bd+cd)(z^2) - (abc+abd+acd+bcd)z + abcd
Integral (*5):
p(z) = z^5 - 5*(a+b+c+d)(z^4)/4 + 5*(ab+ac+ad+bc+bd+cd)(z^3)/3
- 5*(abc+abd+acd+bcd)(z^2)/2 + 5*abcdz

0. Julia seed (Julia version only)
Modify for different Julia sets.
1. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
This will be necessary for some settings.
2. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
Note that for some of them only small values of the divergent
bailout will produce interesting results.
3. Bailout value
The standard "infinity" (ie. divergent) bailout value.
4. Small Bailout
Here you can set the value used for testing for
convergence.
5. Degree (of derivative)
Sets the number of brackets of the form (z - v) to be multiplied
in the formula, ie. determines the highest power of the
derivative and hence the iterated formula will be one power in
z higher. Also determines the number of roots available.
7. First Root
This root is used in all cases.
8. Second Root
This root applies when Degree is Quadratic or higher.
9. Third Root
This root applies when degree is Cubic or higher.
10. Fourth Root
This root only applies when Degree is Quartic.
16. Start z (Mandelbrot version only)
Specifies which root to use as Zstart, when a choice is
available (Degree > Linear).
17. Mu/Lambda version
Mu as f(z)+c, Lambda as c*f(z)+v or c*(f(z)+v),
inverted Mu as f(z)+1/c+v, inverted Lambda as
(1/c+v1)*f(z)+v plus inverted Mu as f(z)+1/c+c+v
and inverted Lambda as (1/c+c+v1)*f(z)+v.
18. Mu/Lambda v
Sets the value of v as used by some of the Mu/Lambda versions.
19. Mu/Lambda v1
Sets the value of v1 as used by some of the Mu/Lambda versions.
20. Extra multiply
When enabled p(z) is multiplied by f2(z). Note that
this will generally alter the highest power of z and
will often alter the derivative of the overall formula
such that it's roots are no longer the roots of p'(z).
21. Iterate the sum
When enabled, the actual z value iterated is summed up with all
previous z values.
22. Self-rotation
When enabled z is rotated by atan2(z) at the start of each iteration.
Plus c does the same but also adds #pixel to the rotated value, it's
only here as it produces some interesting results.
23. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
24. Translation
Translates (moves) the value of z on each iteration.
25. Matrix column 0
The values for the first column of the generic 2*2 transformation
matrix, set to (1,0) for the identity matrix.
26. Matrix column 1
The values for the second column of the generic 2*2 transformation
matrix, set to (0,1) for the identity matrix.
25. Julia-switch offset
Use this to adjust the position of the Julia set you wish to
view using the switch function when it's off centre.
This should be reset to zero when you're on a Julia set.
26. Julia-switch scale
Use this adjust the scale of the Julia set you wish to view
using the switch function when it's too large or too small.
Use values >1.0 to zoom in and values 0 < v < 1.0 to zoom out.
This should be reset to 1.0 when you're on a Julia set.
27. Perturbation (Mandelbrot version only)
Perturbation of Zstart, use to deform the fractal.
28. Mandy-switch offset
Use this to adjust the position of the Mandelbrot set you wish to
view using the switch function when it's off centre.
This should be reset to zero when you're on a Mandelbrot set.
29. Mandy-switch scale
Use this adjust the scale of the Mandelbrot set you wish to view
using the switch function when it's too large or too small.
Use values >1.0 to zoom in and values 0 < v < 1.0 to zoom out.
This should be reset to 1.0 when you're on a Mandelbrot set.
30. Overall function f1
Applied to the whole polynomial ie. as f(z) = f1(p(z)).
Since the derivative of f1(p(z)) is f1'(p(z))p'(z) then the
roots of p'(z) are also roots of the derivative of f1(p(z)).
31. Multiply function f2
Only used when Extra multiply is enabled. When in use
the equation used effectively becomes f(z) = f1(p(z)*f2(z)),
hence the roots of f'(z) don't necessarily match those of p'(z).

3D lighting

When using the 3D lighting colouring modes either in the newer
"Solid 3D" formulas or in the older 3D formulas (Light, Mixed
and BoF shaded) you should use the MMF 3D colouring formula
with "Color Density" set to 1 and "Transfer Function" linear.
The MMF 3D colouring formula should be used "Inside" for the
newer "Solid 3D" formulas or "Outside" for the older 3D formulas.

Using the older 3D formulas, unless you have a great deal of spare
time I don't recommend "BoF60 shaded" mode since it's extremely
tedious setting up a useable palette:
All even colour entries should be set to 0 RGB and the odd ones
as a nice colour spread - you have to do this by hand !
ie. set all 1200 values.
There is an example "par" for BoF60 shaded colouring
in the MMF parameter collection.
Although tedious to set up, the results are quite good, however if
you wish this type of colouring I recommend using the newer 3D
formulas with two layers - one lighting and one of Inside colouring.

A bit of maths

The "special" polynomials in the Transpoly formula are implimented
using versions of the relevant recurrence relations:

1. The Lucas types

F0(z) = L0
F1(z) = L1*z + L2
Fn(z) = (L4*z + L5)*Fn-1(z) + L3*Fn-2(z)

The parameters L0 to L5 can be used to make these types
produce a range of different polynomials.

Use:
"First constant" to set L0
"Base linear coeff" to set L1
"Base linear const" to set L2
"c in c*Fn-2(z)" to set L3
"a in (a*z+c)*Fn-1(z)" to set L4
"c in (a*z+c)*Fn-1(z)" to set L5

The default setting is for Chebyshev type 1,
ie. L0 = 1, L1 = 1, L2 = 0, L3 = -1, L4 = 2, L5 = 0

For the Chebyshev type 2 use:
L0 = 1, L1 = 2, L2 = 0, L3 = -1, L4 = 2, L5 = 0

For the Fermat Polynomials (Fn(1)=2^n-1) use:
L0 = 1, L1 = 3, L2 = 0, L3 = -2, L4 = 3, L5 = 0

For the Lucas-Fermat Polynomials (Fn(1)=2^n+1) use:
L0 = 2, L1 = 3, L2 = 0, L3 = -2, L4 = 3, L5 = 0

2. The Legendre types

F0(z) = 1
F1(z) = z
Fn+1(z) = ((2*n + 1)*z*Fn(z) - n*Fn-1(z))/(n+1)

3. The Laguerre types

F0(z) = 1
F1(z) = 1 - z
Fn+1(z) = ((2*n + 1 - z)*Fn(z) - n*Fn-1(z))/(n + 1)

4. The Hermite types

F0(z) = 1
F1(z) = 2*z
Fn+1(z) = 2*z*Fn(z) - 2*n*Fn-1(z)

5. The Laguerre Associated types

F0(z) = 1
F1(z) = k + 1 - z
Fn+1(z) = ((2*n + k + 1 - z)*Fn(z) - (n + k)*Fn-1(z))/(n + 1)

6. The Ultraspherical types

F0(z) = 1
F1(z) = 2*k*z
Fn(z) = (2*(n + k - 1)*z*Fn-1(z) - (n + 2*k - 2)*Fn-2(z))/n

7. The Jacobi types

F0(z) = 1

F1(z) = (2*(al + 1) + (al + be + 2)*(z - 1))/2

Fn+1(z)
=
(((2*n + al + be + 1)*(al^2 - be^2)
+ (2*n + al + be)*(2*n + al + be + 1)*(2*n + al + be + 2)*z)*Fn
- 2*(n + al)*(n + be)*(2*n + al + be + 2)*Fn-1)
/(2*(n + 1)*(n + al + be + 1)*(2*n + al + be))

The Solid 3D formulas

These formulas for rendering 3-dimensional fractal solids
are very similar except for the parameters specific to the
individual fractal types.
The parameters controlling the position, lighting etc. are
essentially the same.
In all cases you may choose to set a layer to colour the object lit
by one or two light sources, optionally with shadows from one source
OR set a layer to colour the object based on the iteration at the
surface pixel using any Inside colouring OR set a layer to colour
the object based simply on the coordinates of the surface pixel OR
colour the object simply based on the depth (distance from camera).
All the colourings are effectively "Inside" so it's best to set
the "Outside" colouring method to Standard/None and the Outside
transfer to "None" with the Outside solid colour set to your
choice of background colour.
When using lighting or coordinate or depth it's best to set the
inside colouring to the MMF 3D colouring formula, when doing this
for lighting gradient position zero should be darkest and position
399 brightest.

In lighting mode the Phong lighting model is used, this means that
there are three main controls for the lighting - the ambient, the
diffuse and the specular.

The ambient parameter sets the amount of "background" light - even
those parts of the object not lit directly by the light source/s
will be displayed at this brightness.
0 = darkest and 1 = brightest, reasonable values are from say 0.1 to 0.3.

The diffuse parameter sets the "random reflection" value for the
fractal surface. Light reflected in this manner only depends on the
angle of the light source direction to the surface and is independant
of the angle of the viewer's line of sight, it's the sort of lighting
for a primarily "matte" surface. Again use 0 for no diffuse, 1 for
maximum OR alternatively use negative values (down to -1) if you
wish light from the "wrong-side" of the object to have some effect -
this produces "softer" lighting.

There are two parameters controlling the specular lighting, an amount
and an exponent. The specular lighting is the sort of lighting produced
by a shiny-smooth surface - ie. from a primarily "gloss" surface.
The first parameter simply controls the amount, effectively setting
the maximum brightness of the "shine". The second parameter, an exponent,
controls how close to a true mirror-like finish the surface has, the
larger the value the more mirror-like the effect. A typical range of
use would be anything from around 5 to 500 (500 being pretty close to
a mirror and producing a highly targeted shine).

In these new formulas setting up the position is essentially the same
as with the older "user-friendly" 3D formulas but with some added
wrinkles/improvements - you may now choose either parallel or
perspective projection.

As previously you set a target for the camera consisting of X, Y and Z
coordinates.

Then you set the angle to the "camera" from this target.

In parallel mode you can then set the distance of the viewing plane
from the target and the distance to scan (starting from this plane),
ie. the viewing plane is effectively the "front clipping plane".
In this case the parameter "focal length" should be set to zero to
make the formula use parallel projection.

In perspective mode you also set the distance of the viewing plane
from the target - in this case the viewing plane simply controls
the perspective/magnification and you must use the separate parameter
to set the distance of the front clipping plane from the target.
Again you need to set the distance to scan - in perspective mode
this distance starts from the front clipping plane.
Note that you can set the front clipping plane either nearer to the
camera or nearer to the target than the viewing plane.
In this case you need to set a non-zero value for the focal length
and this parameter controls the perspective (along with the viewing
plane position and the standard magnification).

Ideally when you wish the lighting model to be as realistic as possible
the lighting should be done as two layers, one layer solely for the
ambient and diffuse lighting and one layer for the specular,
eg. have a base layer (or layers) using "Inside", "Coordinate" or "Depth"
colouring, then add a layer using "Lighting" with no specular
component and mergemode "multiply" and then a layer using "Lighting"
with only specular and mergemode "screen".

Solid-3D Complex

This formula produces solid 3D fractals from a choice of complex
fractal types, they are rendered using 3 of the four values making
up the standard constant and the Zstart value as the axes.

1. Fractal type
You can choose from several types:
The standard power fractal (Z^n+c)
The standard complex Newton (^n)
The cubic (as described by Stig Pettersson)
fn(z)+c
fn(z)+z^n+c
fn(z)*z^n+c
Lambda c*z(1-z)
Breeder z(1-z)+c
Manowar z^n+oldz+c
2. Power
This allows you to set the value of "n" for the fractal types that
use it.
3. Bailout type
You can choose between divergent and convergent bailout.
Convergent bailout is required for the Newton type and for some
choices of the functions.
4. Bailout value
The value used for testing for bailout. In convergent bailout
mode 1/cabs(z-zold)^2 is tested against this value.
5. Target X and Y coord
You can use the dropper to set these.
6. Target Z coord
7. View Plane distance
Sets the distance of the view plane from the target.
In parallel mode (focal length zero) this view plane is also the
front clipping plane, in perspective mode (focal length > 0) the
view plane position affects the perspective.
8. Front-clipping distance
Sets the distance of the front-clipping plane from the target,
unused in parallel mode (focal length zero).
9. Viewing range
Sets the distance to scan from the front clipping plane (the view
plane in parallel mode).
10. Focal length
Sets the focal length for perspective mode if > 0 or sets parallel
mode if the value is zero.
11. Detail level
Sets the number of steps per unit distance, smaller values produce
faster rendering but more errors.
12. Colouring
You can choose between lighting, inside, coordinate or depth.
For lighting, coordinate or depth you should use the MMF 3D colouring.
You can use any Inside colouring for "inside". All 4 colourings are
of the inside type.
13. Solid condition
Should normally be set to max. iteration but you can use direction
change to speed things up or produce something different.
14. Julibrot axes
You can set the X, Y, Z (and W) axes to be any combination of the
standard constant and the zstart value. The default Zr,Zi,Cr,Ci is
"Julia-style", use Cr,Ci,Zr,Zi for "Mandelbrot-style".

15. X rotation
Sets the rotation around the X-axis ie. "elevation" or "pitch".
16. Y rotation
Sets the rotation around the Y-axis ie. "direction".
NB. Use the Rotation angle under the Location tab to set the
rotation around the Z-axis ie. "roll"

17. 4D rotation
This angle allows you to choose a line in the plane of the
3rd and 4th dimensions (as set in the Julibrot axes option)
to be used as the visible Z axis.
18. 4th dimension offset
This allows you to offset the fractal values down the 4th
(invisible) dimension, it works in combination with the Julibrot
axes option and the 4D rotation.
19. Inside/Coordinate
This parameter allows you to choose which values are passed to the
colouring algorithm when using the Inside, Coordinate or Depth
colouring options. Only x,y really makes sense for Inside as the
other values remain constant during iteration.
20. Ambient Light
The ambient (background) light level for lighting colouring.
21. Diffuse constant
The diffuse lighting constant for lighting colouring.
Controls how "matte-reflective" the surface is.
22. Specular constant
The specular constant for lighting colouring.
Controls how "glossy-reflective" the surface is.
23. Specular exponent
The specular exponent for lighting colouring.
Controls how mirror-like the gloss reflection is.
24. Light value clamp
When enabled this ensures the lighting values remain within the
25. Lighting Method
Allows you to select how the object is illuminated:
Camera: A single light source "from the camera", in parallel mode
this is effectively a remote source in the camera direction, in
perspective mode this is a point source at the viewpoint.
Remote: A single remote light source independant of the camera.
Camera&Remote: 2 sources, one from the camera, one independant.
the independant remote source.
Point: A single point light source independant of the camera.
Camera&Point: 2 sources, one from the camera, one independant.
the independant point source.
26. Light 1
The elevation of the independant light source.
27. Light 2
The direction of the independant light source.
28. Light distance
The distance of the independant point source from the target.
29. Relative light
Allows you to adjust the relative brightness of the light from
the camera source versus the independant source when both are
in use - value > 1 make the independant light more significant
and values 0<x<1 make the camera light more significant.
Allows you to set how dark the shadows are. A value of 1 produces
the darkest shadows and a value of zero is pointless as it produces
31. Inside/Coord function
This function is applied to the value passed to the colouring formula
when using Inside, coordinate or depth colouring.
32. First function
This function is applied to Z at the start of each iteration, some
settings will require larger bailout values, others will require
convergence testing.
33. Function Fn3
The function for the fractal types that require it. As with the first
function some settings will require a larger bailout value and others
will require convergence testing.

Solid-3D Polynomials

This formula produces solid 3D fractals from a choice of complex
polynomial types, they are rendered using 3 of the four values making
up the standard constant and the Zstart value as the axes.

1. Fractal type
This allows you to select the fractal type,
you can choose from 36 types altogether.
Lucas:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Legendre:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Laguerre:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Hermite:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Laguerre Associated (k=c):
Pn(z), Piter(z)
Ultraspherical (k=c):
Pn(z), Piter(z)
Laguerre Associated:
Pkn(z)+c, c*Pkn(z), Pkiter(z)+c, c*Pkiter(z)
Ultraspherical:
Pkn(z)+c, c*Pkn(z), Pkiter(z)+c, c*Pkiter(z)
Jacobi:
Pabn(z)+c, c*Pabn(z), Pabiter(z)+c, c*Pabiter(z)
Jacobi (alpha=c):
Pbn(z), Pbiter(z)
Jacobi (beta=c):
Pan(z), Paiter(z)
For the "Pn" types you can set the degree (n) of the polynomial.
For the Laguerre Associated and the Ultraspherical "Pk" types
you can set the value of the extra constant k.
For the Jacobi types you can set the values of alpha and beta for
the "Pab" types, beta for the "Pb" types and alpha for the "Pa" types.
2. Bailout type
You can choose between divergent and convergent bailout.
Convergent bailout is required for some choices of the functions.
3. Bailout value
The value used for testing for bailout. In convergent bailout
mode 1/cabs(z-zold)^2 is tested against this value.
4. Target X and Y coord
You can use the dropper to set these.
5. Target Z coord
6. View Plane distance
Sets the distance of the view plane from the target.
In parallel mode (focal length zero) this view plane is also the
front clipping plane, in perspective mode (focal length > 0) the
view plane position affects the perspective.
7. Front-clipping distance
Sets the distance of the front-clipping plane from the target,
unused in parallel mode (focal length zero).
8. Viewing range
Sets the distance to scan from the front clipping plane (the view
plane in parallel mode).
9. Focal length
Sets the focal length for perspective mode if > 0 or sets parallel
mode if the value is zero.
10. Detail level
Sets the number of steps per unit distance, smaller values produce
faster rendering but more errors.
11. Colouring
You can choose between lighting, inside, coordinate or depth.
For lighting, coordinate or depth you should use the MMF 3D colouring.
You can use any Inside colouring for "inside". All 4 colourings are
of the inside type.
12. Solid condition
Should normally be set to max. iteration but you can use direction
change to speed things up or produce something different.
13. Julibrot axes
You can set the X, Y, Z (and W) axes to be any combination of the
standard constant and the zstart value. The default Zr,Zi,Cr,Ci is
"Julia-style", use Cr,Ci,Zr,Zi for "Mandelbrot-style".

14. X rotation
Sets the rotation around the X-axis ie. "elevation" or "pitch".
15. Y rotation
Sets the rotation around the Y-axis ie. "direction".
NB. Use the Rotation angle under the Location tab to set the
rotation around the Z-axis ie. "roll"

16. 4D rotation
This angle allows you to choose a line in the plane of the
3rd and 4th dimensions (as set in the Julibrot axes option)
to be used as the visible Z axis.
17. 4th dimension offset
This allows you to offset the fractal values down the 4th
(invisible) dimension, it works in combination with the Julibrot
axes option and the 4D rotation.
18. Inside/Coordinate
This parameter allows you to choose which values are passed to the
colouring algorithm when using the Inside, Coordinate or Depth
colouring options. Only x,y really makes sense for Inside as the
other values remain constant during iteration.
19. Ambient Light
The ambient (background) light level for lighting colouring.
20. Diffuse constant
The diffuse lighting constant for lighting colouring.
Controls how "matte-reflective" the surface is.
21. Specular constant
The specular constant for lighting colouring.
Controls how "glossy-reflective" the surface is.
22. Specular exponent
The specular exponent for lighting colouring.
Controls how mirror-like the gloss reflection is.
23. Light value clamp
When enabled this ensures the lighting values remain within the
24. Lighting Method
Allows you to select how the object is illuminated:
Camera: A single light source "from the camera", in parallel mode
this is effectively a remote source in the camera direction, in
perspective mode this is a point source at the viewpoint.
Remote: A single remote light source independant of the camera.
Camera&Remote: 2 sources, one from the camera, one independant.
the independant remote source.
Point: A single point light source independant of the camera.
Camera&Point: 2 sources, one from the camera, one independant.
the independant point source.
25. Light 1
The elevation of the independant light source.
26. Light 2
The direction of the independant light source.
27. Light distance
The distance of the independant point source from the target.
28. Relative light
Allows you to adjust the relative brightness of the light from
the camera source versus the independant source when both are
in use - value > 1 make the independant light more significant
and values 0<x<1 make the camera light more significant.
Allows you to set how dark the shadows are. A value of 1 produces
the darkest shadows and a value of zero is pointless as it produces
30. Degree of Pn
This allows you to set the degree of the polynomial to be used
in all the "Pn" types, it has no effect on the "Piter" types.
31. k (Pkn types)
Sets the value of the extra constant term required for the relevant
versions of the Laguerre Associated and Ultraspherical types.
32. alpha (Jacobi)
Sets the value of the alpha constant term required for the relevant
versions of the Jacobi types ie. "Pab" and "Pa".
33. beta (Jacobi)
Sets the value of the beta constant term required for the relevant
versions of the Jacobi types ie. "Pab" and "Pb".
34. First constant
Sets the base first constant for a Lucas polynomial,
recurrence relation first term F0(z).
35. Base Linear coeff
Sets the base linear coefficient for a Lucas polynomial,
recurrence relation second term F1(z).
36. Base Linear const
Sets the base linear constant for a Lucas polynomial,
recurrence relation second term F1(z).
37. c in c*Fn-2(z)
Sets the constant multiplier of Fn-2(z) in a Lucas polynomial,
sometimes referred to as Q(x) (where z=x) in the nth term
of the recurrence relation Fn(z).
38. a in (a*z+c)*Fn-1(z)
Sets the coefficient a in (a*z+c)*Fn-1(z) for a Lucas polynomial,
where the "a*z+c" is sometimes referred to as P(x) (where z=x)
in the nth term of the recurrence relation Fn(z).
39. c in (a*z+c)*Fn-1(z)
Sets the constant c in (a*z+c)*Fn-1(z) for a Lucas polynomial,
where the "a*z+c" is sometimes referred to as P(x) (where z=x)
in the nth term of the recurrence relation Fn(z).
40. Inside/Coord function
This function is applied to the value passed to the colouring formula
when using Inside, coordinate or depth colouring.
41. First function
This function is applied to Z at the start of each iteration, some
settings will require larger bailout values, others will require
convergence testing.

Solid-3D Quaternions

This formula produces solid 3D fractals from a choice of quaternion
fractal types, you can choose to render them as Mandelbrots or Julias.

1. Fractal type
You can choose from several types:
Standard (q^2+c)
Lambda c*q(1-q)
Breeder q(1-q)+c
Manowar q^2+oldq+c
2. Mandelbrot switch
This allows you to select the Mandelbrot or Julia version.
3. Bailout value
The value used for testing for bailout.
4. Target X and Y coord
You can use the dropper to set these.
5. Target Z coord
6. View Plane distance
Sets the distance of the view plane from the target.
In parallel mode (focal length zero) this view plane is also the
front clipping plane, in perspective mode (focal length > 0) the
view plane position affects the perspective.
7. Front-clipping distance
Sets the distance of the front-clipping plane from the target,
unused in parallel mode (focal length zero).
8. Viewing range
Sets the distance to scan from the front clipping plane (the view
plane in parallel mode).
9. Focal length
Sets the focal length for perspective mode if > 0 or sets parallel
mode if the value is zero.
10. Detail level
Sets the number of steps per unit distance, smaller values produce
faster rendering but more errors.
11. Colouring
You can choose between lighting, inside, coordinate or depth.
For lighting, coordinate or depth you should use the MMF 3D colouring.
You can use any Inside colouring for "inside". All 4 colourings are
of the inside type.
12. Solid condition
Should normally be set to max. iteration but you can use direction
change to speed things up or produce something different.

13. X rotation
Sets the rotation around the X-axis ie. "elevation" or "pitch".
14. Y rotation
Sets the rotation around the Y-axis ie. "direction".
NB. Use the Rotation angle under the Location tab to set the
rotation around the Z-axis ie. "roll"

15. 4D rotation
This angle allows you to choose a line in the plane of the
3rd and 4th dimensions to be used as the visible Z axis.
16. 4th dimension offset
This allows you to offset the fractal values down the 4th
(invisible) dimension, it works in combination with the 4D rotation.
17. X constant
The X constant for Julias, or the start value of X for Mandelbrots.
18. Y constant
The Y constant for Julias, or the start value of Y for Mandelbrots.
19. Z constant
The Z constant for Julias, or the start value of Z for Mandelbrots.
20. W constant
The W constant for Julias, or the start value of W for Mandelbrots
21. Inside/Coordinate
This parameter allows you to choose which values are passed to the
colouring algorithm when using the Inside, Coordinate or Depth
colouring options. Only x,y really makes sense for Inside as the
other values remain constant during iteration.
22. Ambient Light
The ambient (background) light level for lighting colouring.
23. Diffuse constant
The diffuse lighting constant for lighting colouring.
Controls how "matte-reflective" the surface is.
24. Specular constant
The specular constant for lighting colouring.
Controls how "glossy-reflective" the surface is.
25. Specular exponent
The specular exponent for lighting colouring.
Controls how mirror-like the gloss reflection is.
26. Light value clamp
When enabled this ensures the lighting values remain within the
27. Lighting Method
Allows you to select how the object is illuminated:
Camera: A single light source "from the camera", in parallel mode
this is effectively a remote source in the camera direction, in
perspective mode this is a point source at the viewpoint.
Remote: A single remote light source independant of the camera.
Camera&Remote: 2 sources, one from the camera, one independant.
the independant remote source.
Point: A single point light source independant of the camera.
Camera&Point: 2 sources, one from the camera, one independant.
the independant point source.
28. Light 1
The elevation of the independant light source.
29. Light 2
The direction of the independant light source.
30. Light distance
The distance of the independant point source from the target.
31. Relative light
Allows you to adjust the relative brightness of the light from
the camera source versus the independant source when both are
in use - value > 1 make the independant light more significant
and values 0<x<1 make the camera light more significant.
Allows you to set how dark the shadows are. A value of 1 produces
the darkest shadows and a value of zero is pointless as it produces
33. Inside/Coord function
This function is applied to the value passed to the colouring formula
when using Inside, coordinate or depth colouring.

Solid-3D Hypercomplex

This formula produces solid 3D fractals from a choice of hypercomplex
fractal types, you can choose to render them as Mandelbrots or Julias.

1. Fractal type
You can choose from several types:
Standard (h^2+c)
Lambda c*h(1-h)
Breeder h(1-h)+c
Manowar h^2+oldh+c
Power h^n+c
fn(h)+c
Lambda^n
Breeder^n
h^n+oldh+c
2. Mandelbrot switch
This allows you to select the Mandelbrot or Julia version.
3. Power
The value of the power (n) for the types that use it.
4. Bailout value
The value used for testing for bailout.
5. Target X and Y coord
You can use the dropper to set these.
6. Target Z coord
7. View Plane distance
Sets the distance of the view plane from the target.
In parallel mode (focal length zero) this view plane is also the
front clipping plane, in perspective mode (focal length > 0) the
view plane position affects the perspective.
8. Front-clipping distance
Sets the distance of the front-clipping plane from the target,
unused in parallel mode (focal length zero).
9. Viewing range
Sets the distance to scan from the front clipping plane (the view
plane in parallel mode).
10. Focal length
Sets the focal length for perspective mode if > 0 or sets parallel
mode if the value is zero.
11. Detail level
Sets the number of steps per unit distance, smaller values produce
faster rendering but more errors.
12. Colouring
You can choose between lighting, inside, coordinate or depth.
For lighting, coordinate or depth you should use the MMF 3D colouring.
You can use any Inside colouring for "inside". All 4 colourings are
of the inside type.
13. Solid condition
Should normally be set to max. iteration but you can use direction
change to speed things up or produce something different.

14. X rotation
Sets the rotation around the X-axis ie. "elevation" or "pitch".
15. Y rotation
Sets the rotation around the Y-axis ie. "direction".
NB. Use the Rotation angle under the Location tab to set the
rotation around the Z-axis ie. "roll"

16. 4D rotation
This angle allows you to choose a line in the plane of the
3rd and 4th dimensions to be used as the visible Z axis.
17. 4th dimension offset
This allows you to offset the fractal values down the 4th
(invisible) dimension, it works in combination with the 4D rotation.
18. X constant
The X constant for Julias, or the start value of X for Mandelbrots.
19. Y constant
The Y constant for Julias, or the start value of Y for Mandelbrots.
20. Z constant
The Z constant for Julias, or the start value of Z for Mandelbrots.
21. W constant
The W constant for Julias, or the start value of W for Mandelbrots
22. Inside/Coordinate
This parameter allows you to choose which values are passed to the
colouring algorithm when using the Inside, Coordinate or Depth
colouring options. Only x,y really makes sense for Inside as the
other values remain constant during iteration.
23. Ambient Light
The ambient (background) light level for lighting colouring.
24. Diffuse constant
The diffuse lighting constant for lighting colouring.
Controls how "matte-reflective" the surface is.
25. Specular constant
The specular constant for lighting colouring.
Controls how "glossy-reflective" the surface is.
26. Specular exponent
The specular exponent for lighting colouring.
Controls how mirror-like the gloss reflection is.
27. Light value clamp
When enabled this ensures the lighting values remain within the
28. Lighting Method
Allows you to select how the object is illuminated:
Camera: A single light source "from the camera", in parallel mode
this is effectively a remote source in the camera direction, in
perspective mode this is a point source at the viewpoint.
Remote: A single remote light source independant of the camera.
Camera&Remote: 2 sources, one from the camera, one independant.
the independant remote source.
Point: A single point light source independant of the camera.
Camera&Point: 2 sources, one from the camera, one independant.
the independant point source.
29. Light 1
The elevation of the independant light source.
30. Light 2
The direction of the independant light source.
31. Light distance
The distance of the independant point source from the target.
32. Relative light
Allows you to adjust the relative brightness of the light from
the camera source versus the independant source when both are
in use - values > 1 make the independant light more significant
and values 0<x<1 make the camera light more significant.
Allows you to set how dark the shadows are. A value of 1 produces
the darkest shadows and a value of zero is pointless as it produces
34. Inside/Coord function
This function is applied to the value passed to the colouring formula
when using Inside, coordinate or depth colouring.
35. Function Fn2
The function for the fractal types that require it. Some settings
will require a larger bailout value.

The "Transpoly" formula

This is a collection of fractal types inspired by Morgan Owens'
Fractint Chebyshev collection and includes several different
"special" polynomials implimented using the relevant recursive
relations, either to get the standard Pn(z)+c and c*Pn(z) or by
applying the recursive relation over succesive iterations in the
Piter(z)+c and c*Piter(z) forms.
The iterative transform, initial function and z scaling
are available for all the types.
1. Fractal type
This allows you to select the fractal type,
you can choose from 36 types altogether.
Lucas:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Legendre:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Laguerre:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Hermite:
Pn(z)+c, c*Pn(z), Piter(z)+c, c*Piter(z)
Laguerre Associated (k=c):
Pn(z), Piter(z)
Ultraspherical (k=c):
Pn(z), Piter(z)
Laguerre Associated:
Pkn(z)+c, c*Pkn(z), Pkiter(z)+c, c*Pkiter(z)
Ultraspherical:
Pkn(z)+c, c*Pkn(z), Pkiter(z)+c, c*Pkiter(z)
Jacobi:
Pabn(z)+c, c*Pabn(z), Pabiter(z)+c, c*Pabiter(z)
Jacobi (alpha=c):
Pbn(z), Pbiter(z)
Jacobi (beta=c):
Pan(z), Paiter(z)
For the "Pn" types you can set the degree (n) of the polynomial.
For the Laguerre Associated and the Ultraspherical "Pk" types
you can set the value of the extra constant k.
For the Jacobi types you can set the values of alpha and beta for
the "Pab" types, beta for the "Pb" types and alpha for the "Pa" types.
2. Starting Point/Julia constant
This allows you to modify the seed (constant) value
when in Julia mode, or modify the Zstart value when
in Mandelbrot mode.
3. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
4. Bailout value
The standard "infinity" bailout value.
5. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
6. Small Bailout
Here you can set the value used for testing for
convergence.
7. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
8. Translation (x)
Use this to translate (move) the Z value on each iteration along
the x-axis (real). Typical use -2<=value<=2.
9. Translation (y)
Use this to translate (move) the Z value on each iteration along
the y-axis (imaginary). Typical use -2<=value<=2.
10. Matrix r0,c0
The value for row 0, column 0 of the generic 2*2 transformation
matrix, set to 1.0 for the identity matrix.
11. Matrix r0,c1
The value for row 0, column 1 of the generic 2*2 transformation
matrix, set to 0.0 for the identity matrix.
12. Matrix r1,c0
The value for row 1, column 0 of the generic 2*2 transformation
matrix, set to 0.0 for the identity matrix.
13. Matrix r1,c1
The value for row 1, column 1 of the generic 2*2 transformation
matrix, set to 1.0 for the identity matrix.
14. z scaling
This allows you to set the scale the value of z at the
end of each iteration. You can scale using the iteration
count, a constant or a combination of the two.
This is applied to all the fractal types.
15. Scale value
Here you can set the value of the scaling constant, used only
when the appropriate z scaling is enabled.
16. Degree of Pn
This allows you to set the degree of the polynomial to be used
in all the "Pn" types, it has no effect on the "Piter" types.
17. k (Pkn types)
Sets the value of the extra constant term required for the relevant
versions of the Laguerre Associated and Ultraspherical types.
16. alpha (Jacobi)
Sets the value of the alpha constant term required for the relevant
versions of the Jacobi types ie. "Pab" and "Pa".
17. beta (Jacobi)
Sets the value of the beta constant term required for the relevant
versions of the Jacobi types ie. "Pab" and "Pb".
18. First constant
Sets the base first constant for a Lucas polynomial,
recurrence relation first term F0(z).
19. Base Linear coeff
Sets the base linear coefficient for a Lucas polynomial,
recurrence relation second term F1(z).
20. Base Linear const
Sets the base linear constant for a Lucas polynomial,
recurrence relation second term F1(z).
21. c in c*Fn-2(z)
Sets the constant multiplier of Fn-2(z) in a Lucas polynomial,
sometimes referred to as Q(x) (where z=x) in the nth term
of the recurrence relation Fn(z).
22. a in (a*z+c)*Fn-1(z)
Sets the coefficient a in (a*z+c)*Fn-1(z) for a Lucas polynomial,
where the "a*z+c" is sometimes referred to as P(x) (where z=x)
in the nth term of the recurrence relation Fn(z).
23. c in (a*z+c)*Fn-1(z)
Sets the constant c in (a*z+c)*Fn-1(z) for a Lucas polynomial,
where the "a*z+c" is sometimes referred to as P(x) (where z=x)
in the nth term of the recurrence relation Fn(z).
24. Fn (applied first)
This function is applied as z = Fn(z) right at the start of
the iteration, before the transformation, and will modify
all the fractal types..

The "Trans" formula

TransMandel and TransJulia allow you to set a transformation
to be applied to a fractal formula at each iteration.
You may also apply a function to z prior to the transformation,
as well as a scaling to z at the end of each iteration.
This results in a whole new set of possiblilites with many
variations of the original fractal shape including making
something interesting that is not much like the original.
You can set up a generic two by two transformation matrix and
use it in combination with a straight rotation and a translation.
You have a choice of 28 different base fractals, plus a choice
of 10 different divergent bailout tests and the ability to enable
convergence testing.
1. Fractal type
This allows you to select the fractal type,
you can choose from 28 types altogether.
Standard:
z = z^p + c
Magnet 1:
z = ((z^2+c-1)/(2*z+c-2))^2
Magnet 2:
z = ((z^3+3*(c-1)*z+(c-1)*(c-2))/(3*z^2+3*(c-2)*z+(c-1)*(c-2)+1))^2
11 User-function types:
Fn(z)+c, 1/Fn(z)+c, z*Fn(z)+c, (Fn(z)-c)/z, z/(Fn(z)-c), z*Fn(z)+z+c
Fn(z)+z^2+c, z*(Fn(z)+z)+c, c*Fn(z), Fn(z)+z+c, c*Fn(z)+z
Fastdraw:
-y^2 + flip(xy) + c
Two Square 3:
x^2 + 2*x*y - y^2 + flip(x^2 - 2*x*y - y^2) + c
X Squared:
x^4 - y^2 + flip(2*x^2*y) + c
Two Cube:
x^3 + 3*x^2*y - 3*x*y^2 + y^3 + flip(x^3 - 3*x^2*y - 3*x*y^2 + y^3) + c
Henon:
a - x^2 +b*y +flip(x) + c
Lambda:
c*z*(1-z)
Breeder:
z*(1-z) + c
Cheb (Chebyshev type 1):
Fn1(c*Fn(z))
Cheb1 (Chebyshev type 1):
Fn1(z*Fn(c))
Barnsley1:
(z-1)*c OR (z+1)*c (condition 1)
Barnsley2:
(z-1)*c OR (z+1)*c (condition 2)
Complex Standard:
z^p1 + c
Cheb2 (Chebyshev type 2):
fn1(cfn(z))/fn1(fn(z))
Cheb3 (Chebyshev type 2):
fn1(zfn(c))/fn1(fn(c))
When selecting either of the Magnet types and for some
of the "Fn" types you should enable the small bailout (see below).
The "Cheb" types were inspired by the Chebyshev polynomials, and
assuming you set Fn to ACOS and Fn1 to COS then the "Cheb" Mandelbrot
is the iteration of all the Chebyshev polynomials within the image
starting from your starting point, the Julia's in this case are
for a single Chebyshev polynomial - where the polynomial's degree
is the value of the Julia seed.
2. Starting Point/Julia constant
This allows you to modify the seed (constant) value
when in Julia mode, or modify the Zstart value when
in Mandelbrot mode.
3. Bailout test
Here you can change the test used for detecting divergent bailout.
You have 10 choices - the six normally available for Fractint type
formulas plus four more based on options in MMFrac.
4. Bailout value
The standard "infinity" bailout value.
5. Convergence
This allows you to disable or enable convergence testing,
ie. check for finite point attractors.
6. Small Bailout
Here you can set the value used for testing for
convergence.
7. Rotation
This sets the amount of rotation to be applied to the Z value
at each iteration and is independant of the generic transformation
matrix and the translation values. The value is in degrees.
8. Translation (x)
Use this to translate (move) the Z value on each iteration along
the x-axis (real). Typical use -2<=value<=2.
9. Translation (y)
Use this to translate (move) the Z value on each iteration along
the y-axis (imaginary). Typical use -2<=value<=2.
10. Matrix r0,c0
The value for row 0, column 0 of the generic 2*2 transformation
matrix, set to 1.0 for the identity matrix.
11. Matrix r0,c1
The value for row 0, column 1 of the generic 2*2 transformation
matrix, set to 0.0 for the identity matrix.
12. Matrix r1,c0
The value for row 1, column 0 of the generic 2*2 transformation
matrix, set to 0.0 for the identity matrix.
13. Matrix r1,c1
The value for row 1, column 1 of the generic 2*2 transformation
matrix, set to 1.0 for the identity matrix.
14. z scaling
This allows you to set the scale the value of z at the
end of each iteration. You can scale using the iteration
count, a constant or a combination of the two.
This is applied to all the fractal types.
15. Scale value
Here you can set the value of the scaling constant, used only
when the appropriate z scaling is enabled.
16. Power (standard)
This allows you to set the degree of the standard Mandelbrot
formula type, eg. 2 for z^2+c.
17. Power (complex)
Sets the complex power for the second version of z^p+c.
16. Fn (all Fn types)
Here you can choose from UF's standard function choices for the
function (Fn) to be used in the user-function fractal types and
in the Chebyshev polynomial inspired types.
For the standard Chebyshev polynomials this should be ACOS.
17. Fn1 (Cheb types)
For setting the other function for the Chebyshev polynomial
inspired types, use COS for the standard Chebyshev polynomials.
18. Fn2 (applied first)
This function is applied as z = Fn(z) right at the start of
the iteration, before the transformation, and will modify
all the fractal types. It was added to allow the "simpler"
version of the more interesting members of the "Two square",
"Two Cube" etc. families. These can be produced by choosing
either the standard or complex versions of z^n+c as the
fractal type, with the power value as you like it and by
setting this function to either "conj" or "flip".

J3D Corrected Hypercomplex

This is for the standard hypercomplex Julia sets,
ie. for h^2+c where h=(x,y,z,w)
You may set a target point for the camera and use the rotation
angles to rotate the camera around the target point,
J3D Standard Hypercomplex produces solid 3-dimensional images by
using a third axis representing a linear set of values
of Zstart/Wstart - this third axis can be at any selected
orientation in the plane of Zstart/Wstart.
As with a normal 2D Julia hypercomplex image, the X-axis is
X and the Y-axis is Y but we now have a Z-axis
representing values of Zstart/Wstart.
With the rotation angles set to zero this Z-axis is
perpendicular to the screen.
The "Center" and "Magnification" values are deliberately
ignored. All that using the UF zoom function will do is
cause the fractal to be re-rendered so modifying the center
or magnification should be avoided.
Use the Maximum Iterations value to set the iteration
value to be used as the "solid" boundary, small values
(typically <16) work best.
The parameters for this formula are as follows:
1. Bailout value
The standard "infinity" bailout test value.
2. Target X
Here you can set the target X coordinate,
ie. the X value of the point the camera is aimed at.
3. Target Y
Here you can set the target Y coordinate,
ie. the Y value of the point the camera is aimed at.
4. Target Z
Here you can set the target Z coordinate,
ie. the Z value of the point the camera is aimed at.
5. Field of view
Modifying the field of view will change the perspective,
effectively using a wide or narrow angle camera lens.
Use values <1 for wide angle, >1 for narrow angle.
6. Distance to target
This specifies the distance of the "camera" from the
target point. Modifying the camera angles will rotate
the camera around the target point at this radius.
7. Viewing range
This allows you to set the maximum distance to scan
away from the camera. For optimum results you should set
it at the smallest value that does't cause parts of the
image to disappear - typically 5-10. Using larger values
will help ensure the image is complete but take longer to
produce it.
8. Detail level
The detail level can be used to balance image quality
versus speed of rendering.
Use larger values for a better quality image (eg. up to 500)
or use smaller values (<100) for faster rendering.
9. Colouring
You can choose from four possible colouring modes:
Lighting - lit from a light source.
Atan - coloured using atan of the final x,y value.
Mixed - mixes the above modes.
BoF60 - uses the min value of |h| at the solid boundary.
In all 4 cases you should use the MMF 3D colouring formula.
For the lighting mode colour 0 should be dark and 399 light.
To use the BoF shaded mode all even colours should be set to
black and the odd colours should be "spreads" of values.
10. Solid condition
You may choose to only show a "solid" "correctly" when
the iteration value chosen is reached, or you can "incorrectly"
choose "solidity" if the density change is reversed travelling
along the rays away from the camera.
Basically "Max iteration" is the "correct" method but you may use
"Direction change" instead. "Direction change" is much faster and
can produce some interesting images.
11. Z Rot
The rotation of X/Y around Z.
You could consider this as "roll".
12. X Rot
The rotation of Y/Z around X.
You could consider this as "elevation" or "pitch".
13. Y Rot
The rotation of X/Z around Y.
You could consider this as "direction" or "heading".
14. 4D Rot
This angle is used to set the line in the plane
of Zstart/Wstart used as the third (Z) axis.
Using zero sets the Z-axis to values of Zstart,
a value of 90 degrees sets the Z-axis to values
of Wstart.
15. X constant
Use this to set the X part of the hypercomplex constant in
order to produce different Julia sets.
16. Y constant
Use this to set the Y part of the hypercomplex constant in
order to produce different Julia sets.
17. Z constant
Use this to set the Z part of the hypercomplex constant in
order to produce different Julia sets.
18. W constant
Use this to set the W part of the hypercomplex constant in
order to produce different Julia sets.
19. Directional lighting
You may switch directional lighting on and off using this
parameter, it doesn't apply to Atan or BoF60 colouring.
When off the light source is the camera, when on the light
direction is specified by the light angles.
20. Light 1
This sets the elevation angle of the directional lighting
(when enabled).
21. Light 2
This sets the direction angle of the directional lighting
(when enabled).

J3D Standard Hypercomplex (old)

This formula is still available in case anyone has parameter
files that use it, or anyone wishes to try it out despite the
fact that the maths is flawed !
I made a mistake in the hypercomplex maths - I got a sign wrong -
however I did it consistently throughout the formula so it can
be used to get some interesting results, though the formula
is not using hypercomplex maths !
To use the formula, the instructions are essentially the same
as those given above for the corrected hypercomplex formula.

J3D Standard Quaternion

This is for the standard quaternion Julia sets,
ie. for q^2+c where q=(x,y,z,w)
You may set a target point for the camera and use the rotation
angles to rotate the camera around the target point,
J3D Standard Quaternion produces solid 3-dimensional images by
using a third axis representing a linear set of values
of Zstart/Wstart - this third axis can be at any selected
orientation in the plane of Zstart/Wstart.
As with a normal 2D Julia quaternion image, the X-axis is
X and the Y-axis is Y but we now have a Z-axis
representing values of Zstart/Wstart.
With the rotation angles set to zero this Z-axis is
perpendicular to the screen.
The "Center" and "Magnification" values are deliberately
ignored. All that using the UF zoom function will do is
cause the fractal to be re-rendered so modifying the center
or magnification should be avoided.
Use the Maximum Iterations value to set the iteration
value to be used as the "solid" boundary, small values
(typically <16) work best.
The parameters for this formula are as follows:
1. Bailout value
The standard "infinity" bailout test value.
2. Target X
Here you can set the target X coordinate,
ie. the X value of the point the camera is aimed at.
3. Target Y
Here you can set the target Y coordinate,
ie. the Y value of the point the camera is aimed at.
4. Target Z
Here you can set the target Z coordinate,
ie. the Z value of the point the camera is aimed at.
5. Field of view
Modifying the field of view will change the perspective,
effectively using a wide or narrow angle camera lens.
Use values <1 for wide angle, >1 for narrow angle.
6. Distance to target
This specifies the distance of the "camera" from the
target point. Modifying the camera angles will rotate
the camera around the target point at this radius.
7. Viewing range
This allows you to set the maximum distance to scan
away from the camera. For optimum results you should set
it at the smallest value that does't cause parts of the
image to disappear - typically 5-10. Using larger values
will help ensure the image is complete but take longer to
produce it.
8. Detail level
The detail level can be used to balance image quality
versus speed of rendering.
Use larger values for a better quality image (eg. up to 500)
or use smaller values (<100) for faster rendering.
9. Colouring
You can choose from four possible colouring modes:
Lighting - lit from a light source.
Atan - coloured using atan of the final x,y value.
Mixed - mixes the above modes.
BoF60 - uses the min value of |q| at the solid boundary.
In all 4 cases you should use the MMF 3D colouring formula.
For the lighting mode colour 0 should be dark and 399 light.
To use the BoF shaded mode all even colours should be set to
black and the odd colours should be "spreads" of values.
10. Solid condition
You may choose to only show a "solid" "correctly" when
the iteration value chosen is reached, or you can "incorrectly"
choose "solidity" if the density change is reversed travelling
along the rays away from the camera.
Basically "Max iteration" is the "correct" method but you may use
"Direction change" instead. "Direction change" is much faster and
can produce some interesting images.
11. Z Rot
The rotation of X/Y around Z.
You could consider this as "roll".
12. X Rot
The rotation of Y/Z around X.
You could consider this as "elevation" or "pitch".
13. Y Rot
The rotation of X/Z around Y.
You could consider this as "direction" or "heading".
14. 4D Rot
This angle is used to set the line in the plane
of Zstart/Wstart used as the third (Z) axis.
Using zero sets the Z-axis to values of Zstart,
a value of 90 degrees sets the Z-axis to values
of Wstart.
15. X constant
Use this to set the X part of the quaternion constant in
order to produce different Julia sets.
16. Y constant
Use this to set the Y part of the quaternion constant in
order to produce different Julia sets.
17. Z constant
Use this to set the Z part of the quaternion constant in
order to produce different Julia sets.
18. W constant
Use this to set the W part of the quaternion constant in
order to produce different Julia sets.
19. Directional lighting
You may switch directional lighting on and off using this
parameter, it doesn't apply to Atan or BoF60 colouring.
When off the light source is the camera, when on the light
direction is specified by the light angles.
20. Light 1
This sets the elevation angle of the directional lighting
(when enabled).
21. Light 2
This sets the direction angle of the directional lighting
(when enabled).

M-True3D Userfriendly

This is a more user-friendly version of "M-Type True 3D".
In this version you may set a target point for the camera
and use the rotation angles to rotate the camera around the
target point, this is much more intuitive than the old method.
M-True3D Userfriendly produces solid 3-dimensional images by
using a third axis representing a third variable used
in the 3-function iterations.
The X-axis represents cx the Y-axis cy and the Z-axis cz
in the 3-function iteration:
Newx=@xx*x*x+@yy*y*y+@zz*z*z+cx
Newy=@xy*x*y+@xz*x*z+@yz*y*z+cy
Newz=@xyz*x*y*z+cz
Where @xx,@yy,@zz,@xy,@xz,@yz and @xyz are user-parameters.
With the rotation angles set to zero the Z-axis is
perpendicular to the screen.
The "Center" and "Magnification" values are deliberately
ignored. All that using the UF zoom function will do is
cause the fractal to be re-rendered. So modifying the center
or magnification should be avoided.
Use the Maximum Iterations value to set the iteration
value to be used as the "solid" boundary, small values
(typically <16) work best.
The parameters for this formula are as follows:
1. Bailout value
The standard "infinity" bailout test value.
2. Target X
Here you can set the target X coordinate,
ie. the X value of the point the camera is aimed at.
3. Target Y
Here you can set the target Y coordinate,
ie. the Y value of the point the camera is aimed at.
4. Target Z
Here you can set the target Z coordinate,
ie. the Z value of the point the camera is aimed at.
5. Perturbation of Xstart
Sets the start value of x in the iterations.
6. Perturbation of Ystart
Sets the start value of y in the iterations.
7. Perturbation of Zstart
Sets the start value of z in the iterations.
8-14. Coefficients
These parameters allow you to set the coefficients to be
used in the above iterations. Changing these produces
different fractals.
15. Field of view
Modifying the field of view will change the perspective,
effectively using a wide or narrow angle camera lens.
Use values <1 for wide angle, >1 for narrow angle.
16. Distance to target
This specifies the distance of the "camera" from the
target point. Modifying the camera angles will rotate
the camera around the target point at this radius.
17. Viewing range
This allows you to set the maximum distance to scan
away from the camera. For optimum results you should set
it at the smallest value that does't cause parts of the
image to disappear - typically 5-10. Using larger values
will help ensure the image is complete but take longer to
produce it.
18. Detail level
The detail level can be used to balance image quality
versus speed of rendering.
Use larger values for a better quality image (eg. up to 500)
or use smaller values (<100) for faster rendering.
19. Colouring
You can choose from two possible colouring modes:
Lighting - lit from a light source.
BoF60 - uses the min value of |Z| at the solid boundary.
In both cases you should use the MMF 3D colouring formula.
For the lighting mode colour 0 should be dark and 399 light.
20. Solid condition
You may choose to only show a "solid" "correctly" when
the iteration value chosen is reached, or you can "incorrectly"
choose "solidity" if the density change is reversed travelling
along the rays away from the camera.
Basically "Max iteration" is the "correct" method but you may use
"Direction change" instead. "Direction change" is much faster and
can produce some interesting images.
21. Z Rot
The rotation of X/Y around Z.
You could consider this as "roll".
22. X Rot
The rotation of Y/Z around X.
You could consider this as "elevation" or "pitch".
23. Y Rot
The rotation of X/Z around Y.
You could consider this as "direction" or "heading".
24. Directional lighting
You may switch directional lighting on and off using this
parameter, it doesn't apply to BoF60 colouring.
When off the light source is the camera, when on the light
direction is specified by the following parameters.
25. Light 1
This sets the elevation angle of the directional lighting
(when enabled).
26. Light 2
This sets the direction angle of the directional lighting
(when enabled).

M3D Userfriendly

This is a more user-friendly version of "Mandelbrot 3D".
In this version you may set a target point for the camera
and use the rotation angles to rotate the camera around the
target point, this is much more intuitive than the old method.
M3D Userfriendly produces solid 3-dimensional images by
using a third axis representing a linear set of values
of Zstart - this third axis can be at any selected
orientation in the complex plane of Zstart.
As with a normal 2D Mandelbrot image, the X-axis is
Creal and the Y-axis is Cimag but we now have a Z-axis
representing values of Zstart.
With the rotation angles set to zero this Z-axis is
perpendicular to the screen.
The "Center" and "Magnification" values are deliberately
ignored. All that using the UF zoom function will do is
cause the fractal to be re-rendered so modifying the center
or magnification should be avoided.
Use the Maximum Iterations value to set the iteration
value to be used as the "solid" boundary, small values
(typically <16) work best.
The parameters for this formula are as follows:
1. Bailout value
The standard "infinity" bailout test value.
2. Target X
Here you can set the target X coordinate,
ie. the X value of the point the camera is aimed at.
3. Target Y
Here you can set the target Y coordinate,
ie. the Y value of the point the camera is aimed at.
4. Target Z
Here you can set the target Z coordinate,
ie. the Z value of the point the camera is aimed at.
5. Field of view
Modifying the field of view will change the perspective,
effectively using a wide or narrow angle camera lens.
Use values <1 for wide angle, >1 for narrow angle.
6. Distance to target
This specifies the distance of the "camera" from the
target point. Modifying the camera angles will rotate
the camera around the target point at this radius.
7. Viewing range
This allows you to set the maximum distance to scan
away from the camera. For optimum results you should set
it at the smallest value that does't cause parts of the
image to disappear - typically 5-10. Using larger values
will help ensure the image is complete but take longer to
produce it.
8. Detail level
The detail level can be used to balance image quality
versus speed of rendering.
Use larger values for a better quality image (eg. up to 500)
or use smaller values (<100) for faster rendering.
9. Colouring
You can choose from four possible colouring modes:
Lighting - lit from a light source.
Atan - coloured using atan of the final complex value.
Mixed - mixes the above modes.
BoF60 - uses the min value of |Z| at the solid boundary.
In all 4 cases you should use the MMF 3D colouring formula.
For the lighting mode colour 0 should be dark and 399 light.
To use the BoF shaded mode all even colours should be set to
black and the odd colours should be "spreads" of values.
10. Solid condition
You may choose to only show a "solid" "correctly" when
the iteration value chosen is reached, or you can "incorrectly"
choose "solidity" if the density change is reversed travelling
along the rays away from the camera.
Basically "Max iteration" is the "correct" method but you may use
"Direction change" instead. "Direction change" is much faster and
can produce some interesting images.
11. Z Rot
The rotation of Creal/Cimag around the Zstart axis
or, if you prefer, the rotation of X/Y around Z.
You could consider this as "roll".
12. X Rot
The rotation of Cimag/Zstart around the Creal axis
or, if you prefer, the rotation of Y/Z around X.
You could consider this as "elevation" or "pitch".
13. Y Rot
The rotation of Creal/Zstart around the Cimag axis
or, if you prefer, the rotation of X/Z around Y.
You could consider this as "direction" or "heading".
14. Zstart Rot
This angle is used to set the line in the complex plane
of Zstart used as the third (Z) axis.
Using zero sets the Z-axis to real values of Zstart,
a value of 90 degrees sets the Z-axis to imaginary values
of Zstart.
15. Directional lighting
You may switch directional lighting on and off using this
parameter, it doesn't apply to Atan or BoF60 colouring.
When off the light source is the camera, when on the light
direction is specified by the light angles.
16. Light 1
This sets the elevation angle of the directional lighting
(when enabled).
17. Light 2
This sets the direction angle of the directional lighting
(when enabled).

M-Type True 3D

Please note that this formula has only been kept in
the compilation in case anyone has parameter files
set up to use it - for anyone wanting to produce new 3D
fractal images I recommend using the "Userfriendly"
M-type True 3D produces solid 3-dimensional images by
using a third axis representing a third variable used
in the 3-function iterations.
The X-axis represents cx the Y-axis cy and the Z-axis cz
in the 3-function iteration:
Newx=@xx*x*x+@yy*y*y+@zz*z*z+cx
Newy=@xy*x*y+@xz*x*z+@yz*y*z+cy
Newz=@xyz*x*y*z+cz
Where @xx,@yy,@zz,@xy,@xz,@yz and @xyz are user-parameters.
With the rotation angles set to zero the Z-axis is
perpendicular to the screen.
The "Center" value has no effect on the image and
I highly recommend leaving the magnification alone -
ie. don't use the UF zooming facility.
Use the Maximum Iterations value to set the iteration
value to be used as the "solid" boundary, small values
(typically <16) work best.
The parameters for this formula are as follows:
1. Camera X
This sets the "camera" X location.
2. Camera Y
This sets the "camera" Y location.
3. Camera Z
This sets the "camera" Z location.
4. Perturbation of Xstart
Sets the start value of x in the iterations.
5. Perturbation of Ystart
Sets the start value of y in the iterations.
6. Perturbation of Zstart
Sets the start value of z in the iterations.
7-13. Coefficients
These parameters allow you to set the coefficients to be
used in the above iterations. Changing these produces
different fractals.
14. Field of view
Modifying the field of view will change the perspective,
effectively using a wide or narrow angle camera lens.
Use values <4 for wide angle, >4 for narrow angle.
15. Viewing range
This allows you to set the maximum distance to scan
away from the camera. For optimum results you should set
it at the smallest value that does't cause parts of the
image to disappear - typically 5-10. Using larger values
will help ensure the image is complete but take longer to
produce it.
16. Bailout value
The standard "infinity" bailout test value.
17. Detail level
The detail level can be used to balance image quality
versus speed of rendering.
Use larger values for a better quality image (eg. up to 500)
or use smaller values (<100) for faster rendering.
18. Solid condition
You may choose to only show a "solid" "correctly" when
the iteration value chosen is reached, or you can "incorrectly"
choose "solidity" if the density change is reversed travelling
along the rays away from the camera.
Basically "Max iteration" is the "correct" method but you may use
"Direction change" instead. "Direction change" is much faster and
can produce some interesting images.
19. Rot 1
The rotation of X/Y around Z.
You could consider this as "roll".
20. Rot 2
The rotation of Y/Z around X.
You could consider this as "elevation" or "pitch".
21. Rot 3
The rotation of X/Z around Y.
You could consider this as "direction" or "heading".
22. Directional lighting
You may switch directional lighting on and off using this parameter.
For the lighting colour 0 should be dark and 399 light.
When off the light source is the camera, when on the light
direction is specified by the following parameters.
23. Light 1
This sets the elevation angle of the directional lighting
(when enabled).
24. Light 2
This sets the direction angle of the directional lighting
(when enabled).

Two Cube Family

Two Cube Family is a generic formula for
producing a standard Mandelbrot/Julia type
fractal from the "Two Cube" family:
NewX = +/- X*X*X +/- 3*X*X*Y +/- 3*X*Y*Y +/- Y*Y + C
NewY = +/- X*X*X +/- 3*X*X*Y +/- 3*X*Y*Y +/- Y*Y + D
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

As well as the parameters for any standard M/J type
fractal, there are the parameters to select a member
of the "Two Cube" family.
These parameters are straightforward, they simply set
the sign of the components in the above iteration,
ie. + or - in each case.
There are a total of 256 possible combinations, but
not all of these produce interesting results.
You should note that for colouring modes using
iteration smoothing, the exponent should be set
to 3 (real).

Mandelbrot 3D

Please note that this formula has only been kept in
the compilation in case anyone has parameter files
set up to use it - for anyone wanting to produce new 3D
fractal images I recommend using the "Userfriendly"
Mandelbrot 3D produces solid 3-dimensional images by
using a third axis representing a linear set of values
of Zstart - this third axis can be at any selected
orientation in the complex plane of Zstart.
As with a normal 2D Mandelbrot image, the X-axis is
Creal and the Y-axis is Cimag but we now have a Z-axis
representing values of Zstart.
With the rotation angles set to zero this Z-axis is
perpendicular to the screen.
Use the "Center" location values to set the "camera"
position along the X-axis (Creal) and Y-axis (Cimag).
I highly recommend leaving the magnification alone -
ie. don't use the UF zooming facility.
To set the "camera" location along the Z-axis you must
modify the "Starting point" parameter.
Use the Maximum Iterations value to set the iteration
value to be used as the "solid" boundary, small values
(typically <16) work best.
The parameters for this formula are as follows:
1. Starting point
This allows you to set the value of Zstart at the
"camera" location.
2. Field of view
Modifying the field of view will change the perspective,
effectively using a wide or narrow angle camera lens.
Use values <4 for wide angle, >4 for narrow angle.
3. Viewing range
This allows you to set the maximum distance to scan
away from the camera. For optimum results you should set
it at the smallest value that does't cause parts of the
image to disappear - typically 5-10. Using larger values
will help ensure the image is complete but take longer to
produce it.
4. Bailout value
The standard "infinity" bailout test value.
5. Detail level
The detail level can be used to balance image quality
versus speed of rendering.
Use larger values for a better quality image (eg. up to 500)
or use smaller values (<100) for faster rendering.
6. Colouring
You can choose from three possible colouring modes:
Lighting - lit from a light source.
Atan - coloured using atan of the final complex value.
Mixed - mixes the above modes.
In all 3 cases you should use the MMF 3D colouring formula.
For the lighting mode colour 0 should be dark and 399 light.
7. Solid condition
You may choose to only show a "solid" "correctly" when
the iteration value chosen is reached, or you can "incorrectly"
choose "solidity" if the density change is reversed travelling
along the rays away from the camera.
Basically "Max iteration" is the "correct" method but you may use
"Direction change" instead. "Direction change" is much faster and
can produce some interesting images.
8. Rot 1
The rotation of Creal/Cimag around the Zstart axis
or, if you prefer, the rotation of X/Y around Z.
You could consider this as "roll".
9. Rot 2
The rotation of Cimag/Zstart around the Creal axis
or, if you prefer, the rotation of Y/Z around X.
You could consider this as "elevation" or "pitch".
10. Rot 3
The rotation of Creal/Zstart around the Cimag axis
or, if you prefer, the rotation of X/Z around Y.
You could consider this as "direction" or "heading".
11. Rot 4
This angle is used to set the line in the complex plane
of Zstart used as the third (Z) axis.
Using zero sets the Z-axis to real values of Zstart,
a value of 90 degrees sets the Z-axis to imaginary values
of Zstart.
12. Directional lighting
You may switch directional lighting on and off using this
parameter, it doesn't apply to Atan colouring.
When off the light source is the camera, when on the light
direction is specified by the following parameters.
13. Light 1
This sets the elevation angle of the directional lighting
(when enabled).
14. Light 2
This sets the direction angle of the directional lighting
(when enabled).

4D Transform

4D Transform is a formula that allows you to rotate
a fractal to any orientation within the 4 dimensions
made up of the Zstartreal, Zstartimag, Creal and Cimag axes.
Rotation in this way can produce many interesting
new patterns and can also be used to produce animations.
There are a considerable number of parameters:
1. Fractal type
This allows you to select the fractal type,
you can choose from:
Standard:
z = z*z + c
Magnet 1:
z = ((z^2+c-1)/(2*z+c-2))^2
Magnet 2:
z = ((z^3+3*(c-1)*z+(c-1)*(c-2))/(3*z^2+3*(c-2)*z+(c-1)*(c-2)+1))^2
Fastdraw:
Newx = creal - y*y, Newy = x*y + cimag
X Squared:
Newx = x*x - y*y + creal, Newy = 2*x*x*y + cimag
Two Square 3:
Newx = x*x + 2*x*y - y*y + creal, Newy = x*x - 2*x*y - y*y + cimag
When selecting either of the Magnet types you should
enable the small bailout (see below).
2. Mandelbrot Switch
This allows you to switch the default orientation of
the axes to Mandelbrot or Julia format ie. producing a
Mandelbrot or Julia image if all the angles are zero.
When the angles are other than zero the image will normally
be a Mandelbrot/Julia hybrid.
3. Seed/Perturb
This allows you to modify the seed (constant) value
when in Julia mode, or modify the Zstart value when
in Mandelbrot mode.
4. Zstart centre
This defines the coordinates of the centre of rotation
along the Zstartreal and Zstartimag axes.
5. Cstart centre
This defines the coordinates of the centre of rotation
along the Creal and Cimag axes.
6. Bailout value
The standard "infinity" bailout value.
7. Small Bail flag
This allows you to set the method used for detecting
"small bailout" ie. convergence.
"No small bailout" will disable convergence detection.
"Magnet bailout" detects convergence to (1,0) as occurs
in the Magnet type fractals.
"General bailout" detects convergence generally.
"Magnet-Verified" is the same as Magnet but with an extra
check to avoid possible errors.
8. Small Bail value
Here you can set the value used for testing for
convergence.
9. The angles of rotation
Use these to apply different rotations to the image.
I don't recommend trying to visualise exactly what's
going on (mathematically) when you adjust these values,
I just suggest playing around with them to see what happens.
It's probably best to play around with the angles one at once.

Two Square Family

Two Square Family is a generic formula for
producing a standard Mandelbrot/Julia type
fractal from the "Two Square" family:
NewX = +/- X*X +/- 2*X*Y +/- Y*Y + C
NewY = +/- X*X +/- 2*X*Y +/- Y*Y + D
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

As well as the parameters for any standard M/J type
fractal, there are the parameters to select a member
of the "Two Square" family.
These parameters are straightforward, they simply set
the sign of the components in the above iteration,
ie. + or - in each case.
There are a total of 64 possible combinations, but
not all of these produce interesting results.
You should note that for colouring modes using
iteration smoothing, the exponent should be set
to 2.06 (real).

Two Square 3

Two Square 3 is a standard Mandelbrot/Julia type
fractal, iterated as follows:
NewX = X*X + 2*X*Y - Y*Y + C
NewY = X*X - 2*X*Y - Y*Y + D
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

The only parameters are the same as for any
standard M/J type fractal.
You should note that for colouring modes using
iteration smoothing, the exponent should be set
to 2.06 (real).

Two Square 2

Two Square 2 is a standard Mandelbrot/Julia type
fractal, iterated as follows:
NewX = (X+Y)^2 + C
NewY = (X-Y)^2 + D
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

The only parameters are the same as for any
standard M/J type fractal.
You should note that for colouring modes using
iteration smoothing, the exponent should be set
to 2.06 (real).

Two Square 1

Two Square 1 is a standard Mandelbrot/Julia type
fractal, iterated as follows:
NewX = X*X + 2*X*Y + Y*Y + C
NewY = X*X - 2*X*Y - Y*Y + D
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

The only parameters are the same as for any
standard M/J type fractal.
You should note that for colouring modes using
iteration smoothing, the exponent should be set
to 2.06 (real).

X Squared

X Squared is a standard Mandelbrot/Julia type
fractal, iterated as follows:
NewX = X^4 - Y*Y + C
NewY = 2*X*X*Y + D
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

The only parameters are the same as for any
standard M/J type fractal.
You should note that for colouring modes using
iteration smoothing, the exponent should be set
to 4 (real).

Fastdraw

Fastdraw is a standard Mandelbrot/Julia type
fractal, iterated as follows:
NewX = C - Y*Y
NewY = D + X*Y
Where C/D are the real and imaginary components
of the constant and X/Y are the real and imaginary
components of Z.

The only parameters are the same as for any
standard M/J type fractal.