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.

15. Inversion radius

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

colour gradient without wrapping.

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.

Remote&shadows: An independant remote source with shadows cast.

Camera&Remote&Shadows: 2 sources, this time with shadows cast from

the independant remote source.

Point: A single point light source independant of the camera.

Camera&Point: 2 sources, one from the camera, one independant.

Point&shadows: An independant point source with shadows cast.

Camera&Point&shadows: 2 sources, this time with shadows cast from

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.

30. Depth of Shadow

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

no shadows at all.

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

colour gradient without wrapping.

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.

Remote&shadows: An independant remote source with shadows cast.

Camera&Remote&Shadows: 2 sources, this time with shadows cast from

the independant remote source.

Point: A single point light source independant of the camera.

Camera&Point: 2 sources, one from the camera, one independant.

Point&shadows: An independant point source with shadows cast.

Camera&Point&shadows: 2 sources, this time with shadows cast from

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.

29. Depth of Shadow

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

no shadows at all.

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

colour gradient without wrapping.

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.

Remote&shadows: An independant remote source with shadows cast.

Camera&Remote&Shadows: 2 sources, this time with shadows cast from

the independant remote source.

Point: A single point light source independant of the camera.

Camera&Point: 2 sources, one from the camera, one independant.

Point&shadows: An independant point source with shadows cast.

Camera&Point&shadows: 2 sources, this time with shadows cast from

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.

32. Depth of Shadow

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

no shadows at all.

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

colour gradient without wrapping.

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.

Remote&shadows: An independant remote source with shadows cast.

Camera&Remote&Shadows: 2 sources, this time with shadows cast from

the independant remote source.

Point: A single point light source independant of the camera.

Camera&Point: 2 sources, one from the camera, one independant.

Point&shadows: An independant point source with shadows cast.

Camera&Point&shadows: 2 sources, this time with shadows cast from

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.

33. Depth of Shadow

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

no shadows at all.

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.

For a little bit of maths background about this formula look here.

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.

BoF60 shaded - as above but light shaded.

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.

BoF60 shaded - as BoF60 but light shaded.

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.

BoF60 shaded - as BoF60 but light shaded.

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"

3D formulas instead.

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"

3D formulas instead.

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.