Julia Set Generator

Roland Braune

February 26th, 2003

The Julia Set Generator is a .NET Windows Forms application for generating images of Julia Sets of quadratic and also higher order. The transformation which determines a Julia Set can be changed within the application. The specified expression is parsed by the program and dynamically transformed into MSIL Byte Code using the Reflection.Emit framework. This ensures good performance also for complicated expressions (e.g. polynomials of a higher degree). The application is written in C#.


Julia Sets are subsets of the set of complex numbers. A Julia Set is set that is invariant with respect to a particular transformation on the complex plane. These transformation are usually given by parametrised rational polynomial expressions e.g. f(z) = z4 + z3/(z+1) + L where L is a complex number representing the parameter Lambda.

This transformation is used to define a dynamical system {X,f} where X is a metric space (the complex plane in out case). In a dynamical system the transformation f is applied iteratively to a point x in X. The resulting sequence of points is called the orbit of the point.

A Julia Set is therefore a set of points whose orbits consist solely of points from the set itself. So each chained application f(f(f(...(f(z))...) of the transformation reaches a point in the set. A filled Julia Set is a Julia Set merged with the set of points whose orbits converge to the origin. All other points outside the Julia Set converge to infinity.

Let us consider the "classic" Julia Set defined by the transformation f(z)=z2-L where L=1.1. The set of black points is the filled Julia Set. The boundary of this filled Julia Set is the Julia Set for the given transformation.

This image was computed using the so called "Escape Time Algorithm". This algorithm takes a clipping area of the complex plane and computes the orbit of each point in this area. If the orbit exceeds a certain threshold (also called escape radius) before a specified number of iterations is reached, the point is considered not to belong to the (filled) Julia Set. If the orbit does not exceed the escape region (that is when it wanders around or converges to the origin), it is assumed to belong to the filled Julia Set and a corresponding pixel is set on the screen.

Julia Sets can be classified as fractals. On the one hand they have a fractional (nonintegral) dimension (fractal dimension) greater than their topological one. On the other hand they often exhibit self-similarity. Selected fragments appear in a smaller scale on various other locations of the image or parts of the image seem to be minimized copies of the image as a whole.

The following web page offers a good source for further and more detailed information on Julia Sets: http://www.mcgoodwin.net/julia/juliajewels.html

Using the application

Entering the data

In the main application window click Edit Data on the Julia Set menu.
A dialog box displays in which you can enter the data that will be used for computing the Julia Set image.

The following section gives a brief description of each field:

Starting the computing process

On the Computing menu in the main window, click Start.
A background thread is started to compute the image using the data from the dialog above.
The status bar of the main window shows the progress of the computing process as a percentage value. After the computing process has finshed, the new image is displayed on the screen.

Stopping the computing process

On the Computing menu in the main window, click Stop.
The background computing thread is stopped and the partially computed image of the Julia Set is displayed on the screen.

Zooming in

Press the left mouse button and leave it pressed while dragging the mouse to spawn a (red) zoom rectangle.
Release the left mouse button in order to start the computing of the image of the zoom area defined by the zoom rectangle.

Note: The maximum number of iterations does NOT increase when zooming into the image. Thus the level of detail decreases with higher zoom factors. This does not mean that the corresponding (mathematical) Julia Set also becomes less detailed when it gets magnified. This is only an effect of the Escape Time Algorithm, which can be (partially) avoided by either choosing a higher number of iterations or increasing the number of iterations depending on the zoom factor. The latter could be normally accomplished by the generator program but this functionality is not implemented in this version of the Julia Set Generator.

Zooming out

Click the right mouse button to restore the original non-zoomed image, defined by the data you have entered into the data dialog box last time.

Some interesting Julia Sets together with their parameters

f(z) LReal LImaginary Escape Radius Max. Iterations Draw Escape Regions
z2-L 1.1 0 2 30 -
z2-L 0.745 0.113 2 200 yes
z2-L 0.687 -0.312 2 100 no
z3+L 0.6 0.55 2 40 -
z3-L 0.5 0.5 2 30 -
z3-L 0.38453 0 2 100 -
z4-z-L 0.78 0 2 50 yes
z4+L 0.6 0.55 2 40 -
z5+L 0.8 0.6 2 60 -
z6-z2-L 0.525 0 2 100 yes


Download the file jsgen.exe, copy it to a folder of your choice and execute it.