Chaoscope tutorial

Working with Julias

Inverse Julia quaternion was a late addition to version 0.2. It wasn't even planned to begin with. This is why it's not as easy to handle as other equations, not enough time was spent on its implementation.

The Level parameter

As you may have found out, the Level parameter sets the level of detail of the attractor. When Level is low (below 6) all you get is a bunch of blobs which may remind you of a Lava Lamp. When it's high (greater than 14) you get a higher level of self-similarity. It is equivalent to the number of iterations for the Mandelbrot set.

fig. 1 : Julia inverse quaternion rendered at various levels
Level=3 Level=5 Level=8
Level=15 Level=25

Set it to 15 and you start getting into trouble. Half of the attractor in the preview is darker. At 16, the same half disappears. This is because of the nature of the equation and how it was coded : the left half is calculated first, the higher the level the longer it will take to render it.

It takes 2Level iterations to calculate all solutions for the original orbit position. Therefore, the minimum number of iterations necessary to render one half is 2Level-1. The number of iterations for the preview is 20,000 which is less than 216 (65,536) so there aren't enough for a full Julia. It's also less than 215, but only the last 20,000 points of 50,000 calculated for the attractor adjustment are shown. This has very little incidence on normal rendering so you don't need to worry about it.

The problem is the attractor can't be adjusted correctly for a render if it's not entirely shown, something we're used to with Polynomial equations for instance.

fig. 2 : Incomplete Julia preview when Level > 15
Level=14 Level=15 Level=16

The current workaround is to disable the Auto-Adjust feature (in the View Menu), set the Level to 14 or less, press F6 so the attractor fits perfectly within the view frame, then set the Level back to its original value before the final rendering.

The other problem encountered while implementing Julia was that it wouldn't behave like a normal attractor, i.e. starting from a given orbit position and let it drift on the attractor surface. Instead, the orbit gets a new pseudo-random position every 2Level iterations so that the entire surface of the attractor is covered. Unfortunately, the orbit density isn't uniform, it tends to concentrate on the XY plane, where a 2D projection of the attractor looks most like (in fact, is) the Julia set. There's little you can do about it apart from avoiding parameters where orbit density isn't homogeneous or raising Gamma to a higher value.

To render high quality Julias :

  1. Modify the parameters and view angle with the level set to 14 or lower, avoid values where the attractor appears to be brighter on the XY plane
  2. Adjust the view (F6)
  3. Disable Auto-adjust
  4. Set the Level to desired value (25 or higher)
  5. Make sure the number of iterations is equal to 2Level or higher
  6. Press F4

back to the Tutorials list