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#.
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
The following section gives a brief description of each field:
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.
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 |