Animate Julia Sets

Malin Christersson ◊◊◊

Demonstration of a Julia set

pale mb
Hover mouse (or touch) to generate another Julia set!

Generate two Julia sets

Change the palette

Your browser does not support the canvas tag.

Pattern repetitions:

Pick colouring
regular filled in Julia regular filled in Julia after sine regular filled in Julia after argument regular filled in Julia after argument
Click on the Mandelbrot set to generate two Julia sets, or to zoom in!
Choose click option Zoom in
Pick Julia point

Animate along a circle through the two chosen Julia-set-points

number of frames

Your browser does not support the canvas tag.


Definition of a Julia set

There is one Julia set for each complex number \(c\).

Given a complex number \(c\), pick a complex number \(z_0\) and use the recursive formula \[z_{n+1}=z_n^2+c.\]

If \( |z_n|\nrightarrow \infty \text{ as }n\rightarrow \infty \) then \(z_0\) belongs to the filled-in Julia set. The true Julia set is the boundary of this set.

If the chosen number \(c\) gives rise to a connected Julia set, then \(c\) belongs to the Mandelbrot set (see The Mandelbrot Set for more information). The Mandelbrot set can be defined as the set of all complex numbers such that the corresponding Julia sets are connected. To illustrate this, the Mandelbrot set is shown as a background image in the example at the top.

In this case the function is given by \(f(z)=z^2+c\); you can also use other rational functions. Another example is shown and explained at Newton Fractals.

Generating filled-in and true Julia sets

When using the iterative function \(f(z)=z^2+c\) repeatedly, points will be generated along a so called forward orbit. When generating a filled-in Julia set, the distance to the origin after a maximum number of such iterations can be used to decide if a point belongs to the filled-in Julia set. When generating a true Julia set, i.e. the boundary of the filled-in set, it's better to use a so called backwards orbit. The backwards orbit is generated by using the inverse of \(f\) which is multi-valued. When iterating backwards, you get two points in each step. If one of the points is chosen at random, it will take many iterations to get a satisfactory image since the points are not evenly distributed. In the interactive example at the top, another approach is used: by counting how many times each pixel is visited, in each step a point from a pixel with the minimum number of visits is chosen.

When using backwards orbits, there are at most two points that will not end up at the Julia set. Those are the roots of the equation \(z=z^2+c\).

The interactive examples

true Julia

The first example is a true Julia set.

regular filled in Julia

The second example is a filled-in Julia set coloured using a variant of the algorithm described at Renormalizing the Mandelbrot Escape.

filled in after sine

The third example is a filled-in Julia set where the colour depends on sine of the escape time.

filled in after argument

The fourth example is a filled-in Julia set where the colour depends on the argument of the iterated point at escape time.


jQuery Plugin used on this site for picking colours: Spectrum - The No Hassle jQuery Colorpicker

under an Attribution-NonCommercial-ShareAlike CC license
Creative Commons License