
Consider the equation
zn+1 = z2n + c
Each value of the complex constant c will generate a different sequence. With a graph with the X axis (real axis) covering the range -2.5 to 1.5 and the Y axis (imaginary axis) covering the range -1.5 to 1.5 the Mandelbrot Set image is obtained. (See Mathematics of Divergent Fractals). Now assign to c a point in the Mandelbrot set or its immediate surrounding region. This will be called a Julia set index. On a new graph ranging from -2 to 2 on the real X axis and ranging from -1.5 to 1.5 on the imaginary Y axis, choose a point on the graph and assign it to z0. Now iterate the equation. Do this for every point on the graph, using the same value of c for all iterations. This will generate a Julia set for the point c.
Clearly, c can also be treated as a variable, and so the above equation has 4 dimensions, two for the real and imaginary parts of z, and two for the real and imaginary parts of c. This 4 dimensional object was named a JuliaBrot by Mark Peterson, one of the original developers of the Fractint fractal generating software. In the Fractint implementation, a 3-dimensional ray-traced image is created by generating layers of Julia sets. One of the components of c is held constant while the other becomes the third, or Z axis. The image below is an example of a Fractint-generated JuliaBrot:
![]() |
| creal
= 0.25 cimag = 0.6 to -0.6 |
Stig Pettersson has developed formulas for UltraFractal which are a generalization of the methods available with Fractint. They cover a large variety of fractal types and include the ability to pick any three of the four axes available for generating a 3-dimensional image. The image can also be rotated about the X, Y or Z axes. As with Fractint, hypercomplex and quaternion fractals are included. The next two images are JuliaBrots from the Ikenaga function and the Phoenix function, created with UltraFractal using formulas based upon the formulas of Stig Pettersson:
![]() |
![]() |
| Ikenaga Iterations = 128 4th-dimension: cimag cimag = 0.09 |
Phoenix iterations = 128 4th-dimension: creal creal = 0.56667 |
Complex numbers, which can be graphed in 2-dimensions, can be generalized to 4-dimensions. The two most common generalizations are quaternions and hypercomplex numbers. Quaternions are widely used in physics.
Complex: h = a + bi
Quaternion/Hypercomplex: h = a + bi + cj + dk
where i, j and k are "imaginary" numbers. Quaternions and hypercomplex numbers have different rules for arithmetic that follow from the properties of their "imaginary" components.
For Quaternions:
ij =
k ji = -k
jk = i kj = -i
ki = j ik = -j
ii = jj = kk = -1
ijk = -1
For Hypercomplex numbers:
ij = ji =
k
jk = kj = -i
ki = ik = -j
ii = jj = -kk = -1
ijk = 1
As a result of these properties, multiplication is not commutative for quaternions (h1*h2 is not equal to h2*h1), but is so for hypercomplex numbers. For hypercomplex numbers, division is not always defined. One advantage, from the perspective of fractal formulas, is that hypercomplex numbers can be readily generalized to transcendental functions, and so functions such as sin, cos, tan, cot, sinh, cosh, log, etc. can be used in writing fractal formulas.
Using the equation
zn+1 = z2n + c
but now with
quaternion or hypercomplex numbers, the graphing of z
now requires four dimensions. The next two images were generated with Fractint
using hypercomplex or quaternion numbers.
![]() |
![]() |
| Hypercomplex Iterations = 256 cr = -0.5; ci = -0.5 cj = 0.0; ck = 0.0 4th-dimension: zj |
Quaternion Iterations = 256 cr = -0.5; ci = -0.5 cj = 0.0; ck = 0.0 4th-dimension: zj |
The next image is a quaternion generated with UltraFractal.

Quaternion
Iterations = 10
cr = -0.7; ci = 0.65
cj = 0.0; ck = 0.0
4th-dimension: zk