[chaoscope] Rendering Julias

  • From: Chaoscope <chaoscope@xxxxxxxxxxxxxx>
  • To: chaoscope@xxxxxxxxxxxxx
  • Date: Sun, 13 Jun 2004 02:55:03 +0100

Hi,

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 to improve its implementation. (I had to stop working on it to avoid delaying 0.2 release any further)


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 sometimes look like what's inside 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.

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.

Actually, it takes 2^Level iterations to calculate all solutions for the original orbit position. Therefore, the minimum number of iterations necessary to render one half is 2^(Level-1). The number of iterations for the preview is 20,000 which is less than 2^16 (65,536) so there aren't enough for a full Julia. It's also less than 2^15, 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 we're facing is we can't adjust the attractor correctly for a render if it's not entirely shown, something we're used to with Pickover for instance.

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 I came across while implementing Julia is I couldn't make it work 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 2^Level 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 summarise, here's the procedure 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 Iterations is equal to 2^Level or higher
6) Render


Don't forget to change the default gradients to something a bit funkier and to set the view size to 1024x768 (or higher!).

Happy rendering!

Nicolas Desprez
======================================================
The Chaoscope mailing-list
Archives : //www.freelists.org/archives/chaoscope
Admin contact : chaoscope@xxxxxxxxxxxxxx
Web site : http://www.chaoscope.org
======================================================

Other related posts:

  • » [chaoscope] Rendering Julias