Archive Notice: This thread is old and no longer active.
It is here for reference purposes. This thread was created on an older version of the
flipcode forums, before the site closed in 2005.
Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
Very nice work.
I've done some work with 2D and height-mapped 3D Mandel-Brot and Julia sets, but I'm unfamiliar with Quaternian Julia Sets. Could you tell me how are they generated and where can I find more information?
Wow, that's impressive!
I take it thats random, correct?
I would also be intrested in where I could find some more information on Quaternian Julia sets - I think they would be very good for use in some alien scenes - Don't you just get that creepy feeling looking at that? *grin*
One thing I've always wondered about quaternion fractals is how, exactly, you calculate the ray-set intersection. To me it seems like a VERY non-trivial task. Do you just use brute force to determine approximately where the ray enters the set and then subdivide the region between internal and external until a boundary is found? In that case, what about regions of much complexity where such a naive approach would fail? Or do you just calculate a set of voxels for the set and then refine the visible portions, or what? And then how do you do the surface normal?
I've seen a lot of quaternion fractals out there, and plenty of descriptions of how the iterative process happens, but never anything really explaining how the ray-set interesction takes place...
On a similar note, I must take exception to most of the pages out there on quaternion fractals which state that Julia and Mandelbrot sets aren't true 3D. Granted, heightfield-rendered ones aren't - but the sets themselves are actually 4-dimensional (you can vary Z0 independently of C and get different 2D planes of the 4D hyperset for Mandelbrot as well as for Julia - and I've never seen a rendering of cross-sections of the Julia hyperset). It'd be neat to do raytracing of 3D cross-sections of the 4D Mandelbrot hyperset. Actually, aren't Quaternion fractals technically 6D by the same token? Though the Z0=0 cross-section is already difficult enough to grok as a shape... :)
For what it's worth, the Mandelbrot set was originally created as an index into the continuous Julia sets. It's also interesting to note that the 2D cross-section of the Julia hyperset looks very much like the orbits of the Z0=0 Mandelbrot set at that same C.
Also, sorry if I'm munging terminology here. I only did fractal set theory as a hobby back in high school, and back then I didn't really grasp a lot of the mathematical concepts. It's been a while since I've given much thought to it. :)
Those heightfield fractals are 2.5d fractals just like regular heightfield scenes. To visualize 4D fractal you just take 3D 'slice' (plannar projection) of it which is generally made by setting one of the variables to constant. I have only made regular 2D fractal renderer myself, but I assume that you could raytrace 4D fractal by projecting 3D ray to quaternion space and making iterations on the ray in specified resolution to track the fractal surface.
The quaternion juilia set is defined as the set of q for which q(n+1) = q(n)^2 + c, n->oo, for which |q| < 2,
where q = r + ix + jy + kz, with i² = j² = k² = ijk = -1.
This particular surface (well, volume to be correct) is defined as those q for which |q(10)| < 2. The
k-component of q is omitted due to ray tracing in 3 dimensions. An interval stepping technique is used for
finding the intersection and iterative derivatives used for normal calculations (approximately the same as
found in POVRAY). Expanding the q(n) term and using numerical analysis for roots would result in 2^n-degree
An animation will be created when I have the simultaneous combination of motivation and time. Some ideas
about using these quaternionvolumes together with the marching cubes algorithm has figured in my mind, but
have yet to be realized.