Oran's Julia Explorer
It started as a standalone program written for CS3 at Caltech
(the original applet version can be found here).
It have played with various parts since then, and essentially nothing is left of the original design,
although the functionality is similar. One major visible difference is that it now shows both fractals on
the same canvas with (optional) transparency multiplied into each layer and/or intrinsic to a color(s)
in the colorscheme. I have made the Rainbow3* colorscheme to have points in the Mandelbrot set clear and
points outside of the set opaque. The Trig2*+ colorscheme has its color components oscillating,
including the transparancy. I used an AColor class for this (I couldn't get Color to do it with my 1.1 jdk --
and I wanted to keep it in 1.1). The other major difference is that you can now play with the equations
that produce the fractal, and there are severa presets. Here's what you need to know:
Instructions
- Alt
To set the Julia fractal's c parameter, hold down the Alt key and click on the canvas. The value
of the complex c parameter depends on which point in the Mandelbrot fractal you clicked on (This matters
because the Julia and Mandelbrot zoom independently).
- Shift
Clicking on an image while holding Shift will zoom out by a factor of 2. Click without
holding Shift to zoom in by a factor of 2. Aside from zooming, the new center point will be where
you clicked.
- Ctrl
In order to zoom in or out on the Julia fractal, you must hold down the Control key. Without the
control key, you are clicking on the Mandelbrot fractal.
- Set Args and Render
Sets the fractal parameters. Changes you make (other than clicking on the canvas) will not take effect
until you click this.
- Zoom Standard
Zoom to: { x + iy: -2 < x < 2, -2 < y < 2 }
- Color Schemes
enjoy
- Top layer
Usae the checkboxes to set whether the Julia or Mandelbrot is the top layer
- Opacity
User the sliders to set the opacity of the layer. Use 0% to make a layer invisible and
100% to make it completely opaque (unless the colorscheme has intrinsic transparency)
- Function
Set the equation that produces the fractal (as described below). The two lists allow you
to pick one or two functions to add (or multiply) with the complex parameter "c" (although
for multiplication mode, it should be called "lambda"). The operation is determined by the checkbox, and
the equation is shown in the text field.
- Bailout
This tells the algorithm when to decide that the starting point is definitely not in the fractal
set. For some fractals, you may need to adjust this, and you can also play with the appearance
of the fractal this way, but for suitable bailout tests, the underlying set is the same.
- Presets
Select a preset to change all parameters to the preset configuration.
- Hints and Tips
- Click then quickly Ctrl+Click to zoom in on both
- Find an interesting design on the Mandelbrot and Alt+Click there. This should produce an interesting
Julia fractal
- Turn one layer completely off (by setting opacity to 0%) to more quickly explore
the other fractal
- The bailout test can extremely important or extremely unimportant. For the classic Mandelbrot
and Julia, mod >= 4 is used. The bailout test can significantly change the underlying fractal set that
is being approximated since points that pass the bailout test on the first iteration will be
excluded from the set even if there is an interesting set that does include this point...
To see what the bailout tests look like, zoom out and use a colorscheme with lots of contrast like Trig3
where the first color is orange and the second is more red. Points that pass the bailout test
without applying the function are colored with the first color.
Fractals
This type of fractal is generated by iterating a function that maps complex numbers to complex numbers. The basic idea
is that there are interesting sets for which applying the function to any point in the set produces another point
in the set. This is not enough to make it interesting, it should also have "lots" of periodic points (points that
that will repeat as you iterate the function) in any region. Also, there is a sensitivity to arbitrarily small
changes, and any two arbitrarily small regions of the set have points whose orbits eventually reach the other region.
So, there are places where you could, in theory though not in a computer approximation, zoom in forever and always
have an interesting image.
Many such sets are known to have bailout test such that any point not in the set will eventually pass the
bailout test if the function is iterated long enough. It is known, for example, that points more than 2 units
from the origin are not in the classic Mandelbrot set and that any other point not in the mandelbrot set
will "eventually" reach outside of that region upon iteration of the function (in that case, f(z) = z^2 + c, where
c is the first point).
These images are generated as follows:
- start with a [long] list of colors
- for each point, iterate the function (f(z) = g(z) + c OR f(z) = g(z)*c) starting at that point
- when a point is reached that passes the bailout test, stop
- when the number of iterations reaches the number of colors, stop
- paint the point based on the number of iterations it took to pass
- the points colored with the last color (points whose orbits never pass the bailout test) represent our approximation
of the set.
- The difference between the algorithm for the Mandelbrot and Julia images is that in the Mandelbrot, the point
c is always the point to be colored, and in the Julia, c is fixed for the entire image
The chaotic set itself is all colored the same color, so it might have an interesting shape, but it does not
account for the detail of the image. The colors are added as a way of visualizing the rate at
which the orbits of a point diverge (or pass the bailout test). The most interesting regions in the image are those
near the edge of the set whose orbits eventually diverge, but approximate some of the behavior described above in the
early iterations. The properties of the chaotic set also ensure a degree of self-similarity -- the patterns repeat as you
zoom in.
Finally, you might recognize immediately that if you zoom in very far on a point in the Mandelbrot fractal, the
Julia fractal associated with that point, zoomed into that point, should approximate the same image in the
Mandelbrot. This is illustrated somewhat in the "Classic Julia/Mandelbrot (zoomed)" preset. It is also known that
a Julia set is connected if and only if the point c is in the Mandelbrot set. If c is a point near the edge of the
Mandelbrot set, it may be difficult to tell whether the Julia set is connected. These properties lead to the strategy
for producing interesting Julia images by setting c to an interesting point on the Mandelbrot image.