|
The main idea behind these 3d julia set rendering was to investigate the presence of chaotic behaviour on higher than two dimensional non linear dynamical systems. I selected the so well understood quadratic mapping f(z) = z·z+c for the complex dynamical plane c.
So I defined a new kind of "complex" numbers with three components instead of the two present in standard complex numbers (the real and the imaginart part). Once defined the rules for basic arithmetic operations, the new "complex" dynamical plane should behave chaotically under the same conditions known for the complex case. The new "complex" numbers are defined as follows: or as if you want, where r=1 and i·i=-1. I defined j to be "something" behaving like this: It seems to be a senseless definition, since if j·j=-1 we should derive that i=j, so the second expression "j·i=0" should be imposible. I decided to "invent" a new rule, wich says that you can not take square roots in both sides of to demostrate that i=j, in a similar fashion you can't divide by cero the expression to demostrate that 5=4. If you don't agree with this I just can say that I think we can invent whatever we want in mathematics, just as in any other creative activity of human being. Well, with this definitions, the basic operations as addition or multiplication are as follow: let X = A + i·B + j·C and Y = D + i·E + j·F. Then, X·Y = (AD-BE-CF) + i·(BD+AE) + j·(AF+CD) As you can see, this is the usual complex number arithmetic if you do the third component of the number equal to cero. This makes things somehow elegant, cause you can represent the traditional complex expresions as a special case, so the usual 2d julia set should be some kind of special 3d julia sets as well. To mantain this compatibilty with the standard complex numbers, the modulo of this new numbers is defined as the square root of the sum of each of the three componentes squared. I would like to recalc that this new numbers are not threedimensional vectors, as the standard complex numbers are not 2d vectors. If they where, i·i should equal 1, not -1, since it "is" the dot product of a vector with itself. In the same way, these 3d complex numbers are not three dimensional vectors, although they can be represented as points in a volumen. In fact, this was the original idea when defining this numbers: to have a (one dimensional) dynamical plane representable in a three-dimensional euclidean space. This should allow us to visualize the julia sets as a sculpture. So it is time to get the quadratic formula and descompose it in the three components in order to iterate the formula in the computer. As you allready have done, the result is:
where Zn = Xn + i·Yn + j·Zn and C = a + i·b + j·c. You can calculate the mapping derivative in the usual way to be able to compute de gradient of the Douady-Hubbard potential or the normal vector of the isosurface defined by the equipotential surface. For example partial derivatives for the 3d Mandelbrot set are as follows:
So now everything is ready to explore the dynamics via a scape time algorithm, an orbit-trap algorithm or whatever. You surely want to sample the dynamical plane near the origin (within a radius of 2, for example) and iterate the above expresions. If you plan to draw the julia sets via a raytracer, please read the algorithm page. The tricks explained may me usefull for a voxel-based (volumetric) rendering engine as well. |