Some time ago I made this to test the possibility of making image-based IFS using flash: (move the mouse over it to change fractal shape)
https://dl.dropbox.com/s/7h98zkj3pj3zlvm/ifs2.swfI made it by using an array of movieclips and a recursive routine that makes two smaller copies of the previous generation of images, placed at 180º from each other (taking the base image as the center and the copies orbiting around it). Then the fractal is made easy, by simply changing the position angle of the copies after each iteration.
I wanted to see if I could make a 3D version of this fractal in Fragmentarium using baseshapes (i.e. spheres), but I encountered a problem as the GPU can't handle big arrays. Anyway, with the method I used in flash, anything beyond a few iterations gets really slower and memory consuming (you have to treat each of the parts that are duplicated as a variable and establish their scale and positions individually).
I moved to the idea of finding a folding for this kind of fractal, so I can make an escapetime version. And I found a way, but there's a problem...
I started from the simpler version of abs folding, that works this way:
(The example shows the first iteration of a fractal made of spheres that are drawn using min.DEcombinate method evaluated at each iteration, and I only take x-axis folding and 2D transforms to make the things simpler...)
So a fractal made with this folding iterates the following procedure:
- Fold X (abs)
- Scale
- Translate (constant C, as shown in the image, often called "Julia values")
After some iterations the result is:
And adding some rotation at each iteration:
With this method, the spheres from each side sometimes will overlap at the line of symmetry (as you can see in the example at the right), making a discontinuity in the baseshape used, but not in the fractal itself as each side always meets exactly the opposite (something you may always expect in a reflection transform
). So there are no shape/empty-space discontinuity.
Let's see what happens in the solution I found for the DragonKIFS folding:
So the iteration procedure is:
- If X>0, invert Y (Y=-Y)
- ABS(X) (the reflected copy will be placed at 180º degrees because of the inversion of the other half of the fractal)
- Scale
- Translate (by C constant)
- Rotate
- Invert X (this gives the next copy the right orientation)
The result using some rotation angle is:
Seems to be working right, but...
If the iterated parts trespass the "abs barrier" formed by the axis of symmetry, this is what happens:
So you can see the fractal shape is truncated, also disturbing the distance estimator because of this discontinuity (I didn't made an image of the DE problem, but believe me
)
Off course, as you can see, this also happens with all the child shapes at it's own abs fold axis.
Damn... never see it coming, even when it's obvious this was going to happen
However, using the pure escapetime version of the fractal, I managed to get some decent renderings... using "fudge factor" option of Fragmentarium and progressive rendering helped a lot with the DE trouble... and even I think the discontinuity contributes aesthetically sometimes...
But I still want to make the fractal right, in the way I was looking for. Also I want to make a proper baseshape version to be included in my KDIFS script, and it's when the DE issue is really a problem, because even when the fractal "arms" don't trespass the abs fold line, the DE fails when looking from certain angles... I guess this is caused by the discontinuity even in the empty space, because of the change of sign.
So, if someone has an idea on how to make it right, I'll appreciate your help. Keep in mind that I want only an escapetime version of it.
Thank you in advance!
In the posts below there are some quick renders I made to show the formula's potential, and there is another one in the gallery:
http://www.fractalforums.com/index.php?action=gallery;sa=view;id=12561