Welcome to Fractal Forums

Fractal Art => Movies Showcase (Rate My Movie) => Topic started by: Alon Nahary on December 08, 2016, 09:58:21 PM




Title: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: Alon Nahary on December 08, 2016, 09:58:21 PM
Rendered by my Julia3D software, ray tracing mode, one minutes a frame.
https://www.youtube.com/watch?v=I8lT5wL80cg


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: Alon Nahary on December 11, 2016, 08:45:25 AM
More from this clip:


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: Alon Nahary on December 11, 2016, 08:46:04 AM
More from this clip:


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: Alon Nahary on December 11, 2016, 08:46:33 AM
More from this clip:


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: Alon Nahary on December 11, 2016, 08:47:52 AM
More from this clip:


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: slon_ru on December 11, 2016, 03:49:08 PM
Cool!  :beer:


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: DarkBeam on December 12, 2016, 09:21:54 AM
This looks like an unseen formula. Mind to share it? :beer:


Title: Re: Pottery - Morphing 3D Fractals in Ray Tracing
Post by: Alon Nahary on December 12, 2016, 09:52:53 AM
Most of what I try is original. I write a method like this one, then I random C values to see if I get anything special. I throw away most of what I find, but this one I kept.

Here is this code, returning true or false if a 3D location is in or out of the set:
m_qC is the C with random values from -1 to 1

////////////////////////////////////////////////////////////////////////////////////////////////
bool get3DJuliaColorAlg41(double *start)
{
   CVector3 z(start[1], start[0], start[2]);
   for (int i = 0; i < 30; i++)
   {
      double a = z.x*z.x - z.y*z.y - z.z*z.z;
      double b = 2 * z.x*z.z;
      double c = 2 * z.x*z.y;
      double newx = a + z.x * m_qC.x;
      double newy = b + z.y * m_qC.y;
      double newz = c + z.z * m_qC.z;
      if ((newx*newx + newy*newy + newz*newz) > 8)
         return false;
      z.x = newx;
      z.y = newy;
      z.z = newz;
   }

   return true;
}