Title: Escape Time version of the Tetrahedral Apollonian Gasket Post by: Aexion on April 09, 2011, 05:45:39 PM Hello,
This is my first topic post, so excuse me if I make something wrong.. :embarrass: Recently DarkBean asked me about the escapetime version of the Tetrahedral Apollonian Gasket (its on my da gallery), and after sometime searching on my old files, I have found it, so here is the code: First, variable initializations: Code: float Tetrahedron[]={And the function. it returns true if its solid, false if its just empty space (its crude and unnoptimized!..) Scan the area around the unit sphere.. Code:
This solution may work for every circle inversion based fractal. I have tested it on the Icosahedral and the Dodecahedral gaskets and it produce very interesting results. If anyone is interested on this, I can post other variations.. Thanks Aexion Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: fractalrebel on April 10, 2011, 02:53:52 AM Hi Aexion,
I am not sure this is quite right. The standard Appllonian Gasket is created from circle inversions. The Gasket for the Platonic Solids cases should be from Sphere inversions. Here is my Tetrahedral Appollonian Gasket. The coloring is chosen so that each sphere is colored according to its generator. There are four generators so there are four colors. If you look closely, no to spheres that are the same color should touch. Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: fractalrebel on April 10, 2011, 03:00:00 AM The previous example had 100 iterations. This example has only 5 and the spheres are set to show partial transparency so that you can readily see the internal structure.
Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: fractalrebel on April 10, 2011, 03:17:32 AM Here is a Tetrahedral Gasket that has been "sliced", which is another way to see some of the internal structure. Some texture has also been added to the spheres.
Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: fractalrebel on April 10, 2011, 03:26:39 AM One last image. This one is a Dodecahedral Gasket with coloring based upon the sphere radius. Small spheres are colored gold and the larger ones blue.
Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: DarkBeam on April 10, 2011, 10:58:30 AM @Aexion
This formula looks very good to me :D - except for the fact that spheres seems to have a wrong radius settings (they should touch in a single point ;) ) The only problem is that uses lists, and it's quite not easy to translate in assembly. I bet that I must use those complicated instructions like fld qword ptr ds:[EBP+EAX] :o ... :hmh: But I will try ^-^ Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: DarkBeam on April 10, 2011, 11:18:05 AM Hi Aexion, I am not sure this is quite right. The standard Appllonian Gasket is created from circle inversions. The Gasket for the Platonic Solids cases should be from Sphere inversions. Here is my Tetrahedral Appollonian Gasket. The coloring is chosen so that each sphere is colored according to its generator. There are four generators so there are four colors. If you look closely, no to spheres that are the same color should touch. Are you sure you have readed carefully the formula? :dink: Quote const float radius=Td{ tr }/(ax*ax+ay*ay+az*az); Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: Aexion on April 10, 2011, 01:44:52 PM @Aexion This formula looks very good to me :D - except for the fact that spheres seems to have a wrong radius settings (they should touch in a single point ;) ) The only problem is that uses lists, and it's quite not easy to translate in assembly. I bet that I must use those complicated instructions like fld qword ptr ds:[EBP+EAX] :o ... :hmh: But I will try ^-^ Oh,I forgot to mention that.. look at the code initialization, you will see this line: Code: Td[tr]=(0.81649658573140704000)*1.1;//this parameter is for distorting the size of the inversion.. and: Code: Td[tr]=(0.18350338935852051000)*1.1;//this parameter is for distorting the size of the inversion.. By changing the 1.1 by 1.0, you will get the real solution, but its boring, very boring.. hence why I have increased the size of the inversion.. I forgot that you cannot use arrays, let me try to unwind the loops, but the formula will be larger.. Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: DarkBeam on April 10, 2011, 03:46:22 PM Yeah I can try to use arrays but it's hard to do, I am not as expert by Jesse :embarrass:
Anyway I will not transpose this formula tomorrow, so let me take my time. If you want to add something you are welcome! For example, I need to know exactly what parameters should be user defined before beginning :D Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: Aexion on April 10, 2011, 04:26:30 PM Yeah I can try to use arrays but it's hard to do, I am not as expert by Jesse :embarrass: Anyway I will not transpose this formula tomorrow, so let me take my time. If you want to add something you are welcome! For example, I need to know exactly what parameters should be user defined before beginning :D Ok.. The formula has very few params, so later I will unwind the loops and rewrite it in a more clearly way.. Here is also another formula..this uses the vertices of a Icosahedron, but I think that you can hardly use it, since it uses 13 transformations and it requires a double type (if you use floats, some strange box shapes appers).. anyways, here is it: Initializations: Code: const float Icosahedron[]={And the formula: Code: bool Icosa(double x, double y, double z, int iter) call it by: bool Icosa(x, y,z, 16); //16 iterations This formula is very interesting and beautiful, saddly my renders are not very good, but the internal structure is very fine.. I have included the renders of the two methods. Title: Re: Escape Time version of the Tetrahedral Apollonian Gasket Post by: DarkBeam on April 10, 2011, 04:58:18 PM The problem is not in the var type; I use QWORD pointers so they are natively double precision, but the more the code is long the more it takes to translate. :) Anyway really thanks for the effort! :) It's not said that I will not be able to do the translation ^-^ |