JosLeys
Iterator
Posts: 196


« Reply #60 on: May 12, 2010, 07:36:55 PM » 

I managed to also create the dodecahedron and icosahedron version. For the dodeca, I scale from the point <1,1,1> (scale=phi^2) and reflect on the planes with normals : <1,phi1,1/phi1> <phi1,1/phi1,1> 1/phi1,1, phi1 >
For the icosa, it's the point <phi,1,0> (scale=2.35) and the planes with normals : <1phi,1,phi> <phi,phi1,1> <phi,phi1,1> <1phi,1,phi> <0,1,0>



Logged




knighty
Fractal Bachius
Posts: 570


« Reply #61 on: May 12, 2010, 10:11:06 PM » 

I think my rotation matrix could probably be replaced with a Quaternion implementation, which should be a little quicker  although the matrices are only calculated once at the start so will have negligible overhead compared with the rest of the script.
IMHO it will not be faster on GPU. A matrixvector multiplication is equivalent to 3 dot products. I suspect modern GPU do them in parallel. in the case of quaternion you have to do two quaternionmultiplactions. Each one needs a dot product, a cross product and some additions and multiplications. Ok, I have to try both before giving my opinion. I managed to also create the dodecahedron and icosahedron version. For the dodeca, I scale from the point <1,1,1> (scale=phi^2) and reflect on the planes with normals : <1,phi1,1/phi1> <phi1,1/phi1,1> 1/phi1,1, phi1 >
For the icosa, it's the point <phi,1,0> (scale=2.35) and the planes with normals : <1phi,1,phi> <phi,phi1,1> <phi,phi1,1> <1phi,1,phi> <0,1,0>
Haven't you applied reflections about xy,xz and yz planes(using x=abs(x); y=abs(y) and z=abs(z))?



Logged




JosLeys
Iterator
Posts: 196


« Reply #62 on: May 12, 2010, 11:08:30 PM » 

Haven't you applied reflections about xy,xz and yz planes(using x=abs(x); y=abs(y) and z=abs(z))? No, what I do is take a vertex of the polyhedron, and the planes through the origin perpendicular to the edges that meet at that vertex. So for the dodeca, this is three planes, and five planes for the icosa.



Logged




knighty
Fractal Bachius
Posts: 570


« Reply #63 on: May 12, 2010, 11:18:00 PM » 

Thanks! I was wondering what is the minimal set of reflexion planes necessary to get a given (regular)polyhedrasierpinski. It seems to be 3. That should make things faster .



Logged




Softology


« Reply #64 on: May 13, 2010, 02:11:45 AM » 

@Softology: Are you doing rotation around [Cx,Cy,Cz] instead of [0,0,0]? This will give you different results.
Yes I was doing the rotations around CX,CY,CZ. Thanks for the code. Changing the rotations around the origin gets the tree structures. Jason.



Logged




Softology


« Reply #65 on: May 14, 2010, 06:18:05 AM » 

These new Kaleidoscopic IFS Frcatals are really great. A lot of potential to play with. Here is a quick sample movie of the full octohedral folding going from 0 to 6.3 degrees on the Y axis (only on the first rotation before the folding, the second rotation is 0,0,0).


« Last Edit: May 14, 2010, 06:20:07 AM by Softology »

Logged




KRAFTWERK


« Reply #66 on: May 14, 2010, 10:54:24 AM » 

Oh.. That folding can be this beautiful... This rendering beats any origami I ever have seen... 4D origami Thank you for that movie Softology! I hav not seen many animations of transitions like this of the mandelbox...



Logged




kram1032


« Reply #67 on: May 14, 2010, 12:17:12 PM » 

That's one of the best IFS animations I've seen so far! It seems like slowly the borders between different kinds of fractals vanish... Maybe, a formula can be found, that basically can create any fractal, done so far, without being too complex?



Logged




JosLeys
Iterator
Posts: 196


« Reply #68 on: May 14, 2010, 07:12:27 PM » 

Take three reflection planes in a dodecahedron, one through an edge, one through a diagonal of one of the pentagonal sides and one perpendicular to the said edge. These form a triangle. Changing the scaling point inside that triangle gives, amongst others, the following shapes. One of them is a soccer ball..the first ever fractal one!




kram1032


« Reply #69 on: May 14, 2010, 07:42:54 PM » 

yay, a soccer ball give those darn soccer players that ball. It's so pretty, they'll stop spamming TV



Logged




Tglad
Fractal Bachius
Posts: 590


« Reply #70 on: May 14, 2010, 09:35:57 PM » 

This topic is really awesome and I personally think these fractals are the most significant 3d ones that have been discovered here on fractal forums... and I suspect they will become common place examples of 3d fractals, not least because they generalise known ones (menger sponge, sierpinski tetrahedron) without loosing their properties such as being simple, continuous mapping, connected (in most cases) and most importantly, conformal. You could say that these are julia sets of the type of fractal described here http://www.fractalforums.com/3dfractalgeneration/continuousconformalmandelbrots/. However, after making that thread I discovered that it is impossible to do the +C part to these fractals and keep the result conformal. So adding +C to the above fractals may add more variety, but will add some stretch too. For this reason it seems to me better to view these Julias directly, as this thread is doing, since the Mandelbrot version (with the +C) is in some sense invalid in 3d so long as the fractal involves any rotation. The folding operation has to be done sequentially, so I am surprised that the resulting fractals (eg the icosahedron) still keep the same symmetries, does the order of folding make a difference to the resulting shape? The ballfold (that the mandelbox performs) could be added into the mix as it is the final mobius transform to be added to the set used in this thread (which is reflection, rotation, translation and scale) while keeping the mapping continuous. The unique thing about adding this operation is that it gives spherical geometries, compared to planar ones from the other operations. Wonderful fractals, am I correct in saying that what makes these different from normal IFS fractals is that they are linear time (you aren't doubling the tests each iteration) so the fractal is tractable and deep zooms are achievable.


« Last Edit: May 15, 2010, 01:52:26 AM by Tglad »

Logged




knighty
Fractal Bachius
Posts: 570


« Reply #71 on: May 14, 2010, 11:24:13 PM » 

Take three reflection planes in a dodecahedron, one through an edge, one through a diagonal of one of the pentagonal sides and one perpendicular to the said edge. These form a triangle. Changing the scaling point inside that triangle gives, amongst others, the following shapes. One of them is a soccer ball..the first ever fractal one!
Looks definetly that 3 planes are sufficient to obtain platonic and regularpolyhedronsierpinski . The triangle you described is called the fundamental triangle and the symmetries defined by the planes defined by the edges of that triangle and the origin are in fact the generator set of the group of symmetries of dodecahedron (see Coxeter groups and Wythoff caleidoscopic construction). It should be the same for tetrahedra and octahedra. When you apply rotations, the resulting fractals will be different depending on the set of symmetry planes used even if they belong to the same symmetry group. yay, a soccer ball give those darn soccer players that ball. It's so pretty, they'll stop spamming TV Here is a quick sample movie of the full octohedral folding going from 0 to 6.3 degrees on the Y axis (only on the first rotation before the folding, the second rotation is 0,0,0).
Your videos are awesome just like the trees picture. Thank you (because I'm not able patient enought to do that myself ) Yes thay are! They are just a subset of the whole class of fractals based on your ideas. Could we call it "continuous conformal Piecewise transformations fractals"? However, after making that thread I discovered that it is impossible to do the +C part to these fractals and keep the result conformal. So adding +C to the above fractals may add more variety, but will add some stretch too. For this reason it seems to me better to view these Julias directly, as this thread is doing, since the Mandelbrot version (with the +C) is in some sense invalid in 3d so long as the fractal involves any rotation.
It's true that the "mandelbrot" versions of the "Kaleidocopic IFS" are featureless and not interresting at all. The folding operation has to be done sequentially, so I am surprised that the resulting fractals (eg the icosahedron) still keep the same symmetries, does the order of folding make a difference to the resulting shape?
I'll try to do some tests but it seems that the answer is "no" in that particular case. You can obtain for example the same dodecasierpinski fractal by using different sets of symmetry planes. What surprises me most is that only 3 symmetries are sufficient according to Jos Leys results. The ballfold (that the mandelbox performs) could be added into the mix as it is the final mobius transform to be added to the set used in this thread (which is reflection, rotation, translation and scale) while keeping the mapping continuous. The unique thing about adding this operation is that it gives spherical geometries, compared to planar ones from the other operations.
I've tried ballfolds (which center is not necessarily [0,0,0]) in 2d and tested Buddhi's DE technique. everything works as a charm (well, sometimes it's necessary to scale down the estimated distance). No 3D for now though. Wonderful fractals, am I correct in saying that what makes these different from normal IFS fractals is that they are linear time (you aren't doubling the tests each iteration) so the fractal is tractable and deep zooms are achievable.
Yes! that's what make them so interresting, but they are not really IFS fractals (in general). There are DE technique For IFS that are not exponential in time (see this article). David Makin have also developped a technique similar to one that is described in that article.


« Last Edit: May 14, 2010, 11:28:03 PM by knighty »

Logged




Tglad
Fractal Bachius
Posts: 590


« Reply #72 on: May 15, 2010, 02:59:11 AM » 

One difference with the ballfold is that it will make a multifractal rather than a simple fractal. So it would be clearer to put Kaleidoscopic+ballfold into its own category. I must say I like Kaleidoscopic as a name, and looking at Softology's videos it really does resemble a Kaleidoscope in how it changes form. Maybe 'Kaleido' for short, I just discovered it is Latin for beautiful shape! Which is accurate I think this might be the most general formula: for each I float length = dot(point, Direction[I]) if (length > Distance[I]) point = 2*Direction[I]*(lengthDistance[I]) // fold end point.rotate(AngleVector) point += Offset point *= Scale for any set of Directions, Distances and for any AngleVector, Offset and Scale>1. I don't think it can be made simpler and any rearrangement can be put into the above form I think. I wonder whether it is possible to generate the (smooth) platonic solids with this method... so a sierpinski tetrahedron can from from a regular tetrahedron just like a Koch curve can form from a straight line.


« Last Edit: May 15, 2010, 03:01:25 AM by Tglad »

Logged




knighty
Fractal Bachius
Posts: 570


« Reply #73 on: May 15, 2010, 04:39:02 PM » 

For the Kaleidoscopic IFS, the transforms are linear or piecewise linear; and conformal or anticonformal. The fixed point of those transforms, beside the stretching, is [0,0,0]. The fixed point of the stretching transform is defined by [Cx,Cy,Cz]. According to this definition, the menger sponge family is not, strictly speaking, a keleidoscopic IFS. The most general formula would be: point.rotate(AngleVector[k1]) for each I point.rotate(AngleVector[i1]) float length = dot(point, Direction[I]) if (length > Distance[I]) point = 2*Direction[I]*(lengthDistance[I]) // fold point.rotate(AngleVector[i2]) end point.rotate(AngleVector[k2]) point += Offset point *= Scale
if rotate _{i1} is the inverse of rotate _{i2}, the rotation can be embeded into Direction _{i} instead. i.e. if fold(direction,x) is the folding transform we have: rotation ^{1}(fold(direction,rotation(x)))==fold(rotation ^{1}(direction),x). In the general case, it can't be simplifyed this way. (or maybe i'm wrong) By composing the rotations, the above algorithm could be simplifyed to: point.rotate(AngleVector0) for each I float length = dot(point, Direction[I]) if (length > Distance[I]) point = 2*Direction[I]*(lengthDistance[I]) // fold point.rotate(AngleVector[i]) end point += Offset point *= Scale
In the "origami IFS", the origin [0,0,0] desn't need to be a fixed point of the foldings and the rotations. It's equivalent to introducing translations in the algorithm. There are also different types of foldings that can't be obtained by composing simple foldings. one example is the box folding. Adding sphere foldings, gives the most general set of this kind of fractals. The sphere folding center may be arbitrary. Moreover, it could have 3 centers instead of one if I'm not getting it wrong. I don't know exactly what multifractal means, but if it imply that the fractal dimension depends on position and scale, I think that the Kaleidoscopic IFS are in general multifractal. It's possible to generate the platonic solids (+ regular and semiregular solids) with this metod. For example the tetrahedra, octa and dodecasierpinski becomes smooth for 1<scale<=1.5.



Logged




Tglad
Fractal Bachius
Posts: 590


« Reply #74 on: May 15, 2010, 11:11:08 PM » 

I think you can simplify the folding down to the code I wrote, rotating the point for after each fold should be equivalent to having each subsequent direction vector rotated, and a total rotation at the end. The rotations should also compose down into just 1 rotation.
Good point about the box fold, I suppose unusual folding could fall into a larger category which would need to be individually coded as there are probably loads of types of combined folds.
Multifractal means it doesn't have a single fractal dimension, this happens if the scale factor varies with location. ballfold scales the space more near the minRadius than at the fixed radius, so such fractals can't be given an exact fractal dimension.



Logged




