A combination of line and point orbit traps, done in 2000 - Click image to enlarge
The idea
Despite the technique can be easily extended to higher dimensions (like 3D orbit traps), we will stick to two dimensions for now. Therefore, we are working with complex numbers in a complex plane, either the C plane (parameter plane) for the Mandelbro set of the Z plane (dynamic plane) for Julia sets. In the old escape method coloring technique the amount of iterations needed to escape a bailout radius is used as index into a color palette (procedural or LUT-based). What we want is to find an alternative way to assign a color index to that point or pixel.
For that, we are going to analize all the sequence of points that was generated during the iteration process. That set of points is usually refered to as "the orbit". For the Mandelbrot set, the orbit would therefore be the sequence { 0, c, c^2+c, ... }, and for a Julia set {z, z^2+c, ... }, etc. Of course, any dynamical system that produces a series of points after repeated iteration is a candidate for this technique, it's not restricted to Mandelbrot or Julia sets. Let's continue assuming we are working with the Mandelbrot set, tho.
So, given an orbit orbit(c) = { 0, c, c^2+c, ... } we can decide to study how this orbit looks like when drawn in the plane. Indeed, it will be some sort point cloud, a different one for every point/pixel c we start with. In fact, if the pixel c belongs to the Mandelbrot set (the interior) then orbit(c) will be something quite boring, as the points of the orbit will converge to a fixed point or will oscilate between a number of fixed points, which amount depends in the bulb of the set we are in. However, if the point c being shaded belongs to the exterior of the Mandelbrot set, then the orbit will be quite more fun, in the sense that the points in the orbit will fly all over the plane before they escape to inifinity. The closer the original point to the set border, the longer this orbit will be. What we are seeking for is to analyze somehow this orbit and extract a different color for each.
Trapping the orbit
ExtensionsAt this point nothing stops us from introducing even more geometric figures beyond points and lines and compute distances to then. Ellipses, rings, hyperbolas, rectangles, stars, etc. It's really up to out imagination. We can also distort these shapes with arbitrary mappings like sinus deformations, cartesian-to-polar change of vatiables, etc. Another interesting extension is to make the trap change as the orbit progresses, like the position of the point or the inclination of the line. The distortion parameters can also be changed during the interation process. Possibilities are truly endless. It's also possible to keep track of the relation of the orbit to more than one trap, and then combine the results to give a single color index. Possibilities can be the min or the max distance of all the traps. It's also interesting sometimes to collect other more complex statistical values than the minimun distance. Avereage distace or the standard desviation of the distances from every point in the orbit result in pleasing images too. |
A combination of line orbit traps - done in 2001 |
LayeringWith such a huge amoung of possibilities to choose from it seems natural to extend the palette indexing method for coloring a pixel to a multilayer system. For example, we could compute some colors using a given certain orbit trap and palette settings, do the same thing with another orbit trap and pallete, and then combine the color results. This can be done with as many of these "layers" as needed and with any blending mode we can think of, for every layer (see your favourite image processing program). This is pretty much what programs like Ultrafractal do, and it was the main technique used arround the years 1998 to 2002. Another example is the Julia Slide 4k intro I made in 2001. Line traps, done in 2000 - Click image to enlarge |
Line traps, done in 2001 - Click image to enlarge |