Logo by simon.snake - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. August 19, 2022, 07:36:46 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 ... 5 6 [7] 8 9 10   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Kaleidoscopic (escape time) IFS  (Read 88428 times)
Description: An interresing class of fractals
0 Members and 1 Guest are viewing this topic.
JosLeys
Strange Attractor
***
Posts: 258


WWW
« Reply #90 on: May 17, 2010, 05:30:27 PM »

Knighty, looks to me like your rays are missing the back part of the object as they pass through the holes. Try putting in a condition that your distance estimate can never increase. In other words, keep track of the DE as you step on the ray and if the DE is larger than a previous value on that ray, take the smaller value..
Logged
knighty
Fractal Iambus
***
Posts: 819


« Reply #91 on: May 17, 2010, 09:44:51 PM »

I have checked the estimated distance field (in 2d slices). There are no over estimation of the distances. It turns out that that is the result of the folding planes set used in this case: the icosahedra is hollow  smiley. I have tried with dodeca and tetra. With octahedra, i need two pre-folds but it stays hollow. For the tetrahedra, one prefold is sufficient and gives the regular tetra-sierpinski.
I think this "phenomenon" is due to the fact that the solid angle between the fundamental triangle and the origin is too small. while transformed, Interior points get outside too quickly. Anyway, I like it this way: more possibilities!
Could you give the set of folding planes and center of stretch you have used?
Logged
Jesse
Download Section
Fractal Schemer
*
Posts: 1013


« Reply #92 on: May 17, 2010, 10:57:10 PM »

Just got the animation feature working with the extended parameters and made a little sierpinski morph.
More randomly choosen parameters, but some spots are ok i think:

<a href="http://vimeo.com/moogaloop.swf?clip_id=11816563&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA" target="_blank">http://vimeo.com/moogaloop.swf?clip_id=11816563&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA</a>
Logged
subblue
Conqueror
*******
Posts: 116



WWW
« Reply #93 on: May 17, 2010, 11:10:00 PM »

Just got the animation feature working with the extended parameters and made a little sierpinski morph.
Very interesting. I love the lighting and shading you achieve with your renders. Do you have two light sources with proper ambient occlusion?
Logged

www.subblue.com - a blog exploring mathematical and generative graphics
Hamilton
Alien
***
Posts: 22


« Reply #94 on: May 17, 2010, 11:24:06 PM »

Just got the animation feature working with the extended parameters and made a little sierpinski morph.

Wow, this sequence is simply stunning!
Just love those "living" forms, especially the part from 01:02 to 01:30...
Logged
JosLeys
Strange Attractor
***
Posts: 258


WWW
« Reply #95 on: May 17, 2010, 11:26:14 PM »

Quote
Could you give the set of folding planes and center of stretch you have used?
Normals for the three planes:
No[0,0]= -phi, No[0,1]= phi-1, No[0,2]=1
No[1,0]= 1,     No[1,1]=-phi,   No[1,2]=phi+1
No[2,0]= 0,     No[2,1]= 0,      No[2,2]=-1

Center that generates the icosa : P[0,0]=0.850650808,P[0,1]=0.525731112,P[0,2]=0
Logged
Jesse
Download Section
Fractal Schemer
*
Posts: 1013


« Reply #96 on: May 18, 2010, 12:42:41 AM »

Very interesting. I love the lighting and shading you achieve with your renders. Do you have two light sources with proper ambient occlusion?

Just a fake AO based on z-buffer and phong shading with up to 4 lights in infinity positions, so i only need 2 angles for them.
Have some improvements in mind to get a better AO that takes care of the background and object colors.

Just love those "living" forms, especially the part from 01:02 to 01:30...

Is also my favorite part  smiley
« Last Edit: May 18, 2010, 12:47:57 AM by Jesse » Logged
KRAFTWERK
Global Moderator
Fractal Senior
******
Posts: 1439


Virtual Surreality


WWW
« Reply #97 on: May 18, 2010, 08:40:20 AM »

Totally alien  alien

I am so glad I found this forum, a new world almost every day...

Thanks!  afro
Logged

Syntopia
Fractal Molossus
**
Posts: 681



syntopiadk
WWW
« Reply #98 on: May 18, 2010, 12:54:33 PM »

Knighty, I think the reason your icosa looks the way it does, is because you apply your pre-rotations outside the DE-loop (the left image). If you put the rotations inside the loop (the right image), it seems quite solid.



Of course this slows down the rendering since you have to apply the reflections five times each iteration.

I use the x,y,z (abs) reflection to speed up the calculation a bit:

while (n < maxIterations) {
    p = abs(p); // saves us three repetitions
    if (dot(p, n1)>0) { p *= n1Mat; } // rep 1
    if (dot(p, n2)>0) { p *= n2Mat; }
    if (dot(p, n3)>0) { p *= n3Mat; }
    if (dot(p, n1)>0) { p *= n1Mat; } // rep 2
    if (dot(p, n2)>0) { p *= n2Mat; }
    if (dot(p, n3)>0) { p *= n3Mat; }
    p = p*scale - offset*(scale-1.0);
       
    if (dot(p, p) > bailoutSquared) break;
    n++;
}

Does anyone know of a faster way to reduce the number of reflections? Perhaps it is possible to transform to a new coordinate system, where the normals are perpendicular and axis-oriented, and use the fast 'abs' operator, before transforming back?

And, btw, thanks for a very interesting thread. These systems are truly fascinating.
Logged
kram1032
Fractal Senior
******
Posts: 1863


« Reply #99 on: May 18, 2010, 04:49:35 PM »

Those images and that animation are just great!  cheesy
Be careful that you're not sued for illegally copying nature's ideas, though tease
Logged
Syntopia
Fractal Molossus
**
Posts: 681



syntopiadk
WWW
« Reply #100 on: May 19, 2010, 10:40:47 PM »

Hi, just wanted to share some images created with the hollow (pre-rotated) Icosahedron variant.








(All rendered on a GPU using Subblue's Pixel Bender raytracer)

Best, Mikael.
Logged
knighty
Fractal Iambus
***
Posts: 819


« Reply #101 on: May 19, 2010, 10:58:24 PM »

Great anim jessy!  the wave  Repeating Zooming Self-Silimilar Thumb Up, by Craig

Jos Leys: I'm getting almost exactly the same effect. Perhaps you are applying it 3 to 5 (?) times inside the loop as suggested by Syntopia. Are you? smiley

BTW, Welcome Syntopia! smiley
Actually, I was wondering if three folds only were suficient to get the icosa and or dodeca. Otherwise, what's the minimal number of folds necssary to get the icosa (p=abs(p) counts 3  evil).
Also, I like the hollow icosa (I see that you like it too... great renderings wink). I can fly through! While playing with the foldings I've found one that is made of 20 sierpinski triangles:
Code:
fractal(x,y,z,scale,rot[3][3]){
   
   for(i=0;i<5;i++){//5 pre-folds
      y=abs(y);
      z=abs(z);
      t=x*n3[0]+y*n3[1]+z*n3[2];
      if(t<0){x-=2*t*n3[0];y-=2*t*n3[1];z-=2*t*n3[2];}
   }
   r=x*x+y*y+z*z;
   for(i=0;i<MI && r<bailout;i++){
#ifdef PRE_ROTATE
      x1=rot[0][0]*x+rot[1][0]*y+rot[2][0]*z;
      y1=rot[0][1]*x+rot[1][1]*y+rot[2][1]*z;
      z1=rot[0][2]*x+rot[1][2]*y+rot[2][2]*z;
      x=x1;y=y1;z=z1;
#endif
      y=abs(y);
      //z=abs(z);//I've removed this
      t=x*n3[0]+y*n3[1]+z*n3[2];
      if(t<0){x-=2*t*n3[0];y-=2*t*n3[1];z-=2*t*n3[2];}
     
      x=scale*x-stc[0]*(scale-1);
      y=scale*y-stc[1]*(scale-1);
      z=scale*z-stc[2]*(scale-1);
     
      r=x*x+y*y+z*z;
   }
   (sqrt(x*x+y*y+z*z)-2)*scale^(-i)
}
Here is what I get without the rotation:

And with the rotation (and different offset):



Now another variant:
Code:
fractal(x,y,z,scale,rot[3][3]){
   
   for(i=0;i<5;i++){//5 pre-folds
      y=abs(y);
      z=abs(z);x=abs(x);
      t=x*n3[0]+y*n3[1]+z*n3[2];
      if(t<0){x-=2*t*n3[0];y-=2*t*n3[1];z-=2*t*n3[2];}
       
   }
   r=x*x+y*y+z*z;
   for(i=0;i<MI && r<bailout;i++){
#ifdef PRE_ROTATE
      x1=rot[0][0]*x+rot[1][0]*y+rot[2][0]*z;
      y1=rot[0][1]*x+rot[1][1]*y+rot[2][1]*z;
      z1=rot[0][2]*x+rot[1][2]*y+rot[2][2]*z;
      x=x1;y=y1;z=z1;
#endif
      y=abs(y);
      z=abs(z);x=abs(x);//added another fold
      t=x*n3[0]+y*n3[1]+z*n3[2];
      if(t>0){x-=2*t*n3[0];y-=2*t*n3[1];z-=2*t*n3[2];}//changed the condition (t>0) instead of (t<0)
     
      x=scale*x-stc[0]*(scale-1);
      y=scale*y-stc[1]*(scale-1);
      z=scale*z-stc[2]*(scale-1);
     
      r=x*x+y*y+z*z;
   }
   (sqrt(x*x+y*y+z*z)-2)*scale^(-i)
}
Without rotations it gives 6 lines but applying rotation and changing the offset:


Does anyone know of a faster way to reduce the number of reflections? Perhaps it is possible to transform to a new coordinate system, where the normals are perpendicular and axis-oriented, and use the fast 'abs' operator, before transforming back?
Yes, you can! but I think it's not always faster. In the case of tetrahedra, octahedra-cube it's quite easy to find (45░ rotations) and should give some speed up (haven't tried so can't be sure). In the case of icosahedra-dodecahedra it's more tricky (it's difficlult to see without a good CAD software wink)
Logged
JosLeys
Strange Attractor
***
Posts: 258


WWW
« Reply #102 on: May 19, 2010, 11:11:54 PM »

Here is what I find:
The tetra, the octa and the cube need 3 folds.
The dodeca and the icosa need 5 folds.
So the sequence is : fold around the three symmetry planes n times, scale from fixed point, fold n times, scale...etc.

BTW, the treshold scale value above which the polyhedron is not smooth anymore is :
1.5 for the tetra, dodeca and icosa
2.0 for the cube
1+phi/2 (about 1.8..) for the dodeca.
Logged
knighty
Fractal Iambus
***
Posts: 819


« Reply #103 on: May 19, 2010, 11:22:55 PM »

Thank you very much! smiley At some moment I was  head batting  grin
Logged
Softology
Conqueror
*******
Posts: 120


« Reply #104 on: May 20, 2010, 01:39:17 AM »

Can anyone assist with the icos and dodec folding code?  I cannot follow the snippets so far.
I am using Knighty's method for folding like this for the full octahedral.  What should the folding code look like in this sort of format for icosa and dodeca?

Code:
     x=abs(x);y=abs(y);z=abs(z);
      if(x-y<0){x1=y;y=x;x=x1;}
      if(x-z<0){x1=z;z=x;x=x1;}
      if(y-z<0){y1=z;z=y;y=y1;}

Here is another sample movie.  Must be seen in full HD for all the finer details.

<a href="http://www.youtube.com/v/XxfoPq_eKAE&rel=1&fs=1&hd=1" target="_blank">http://www.youtube.com/v/XxfoPq_eKAE&rel=1&fs=1&hd=1</a>

The pre-rotate technique is great too.  Opens up another layer of parameter space to search.

Jason.
Logged
Pages: 1 ... 5 6 [7] 8 9 10   Go Down
  Print  
 
Jump to:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.189 seconds with 25 queries. (Pretty URLs adds 0.012s, 2q)