// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

  

  

  

background{ color rgb < 0.75, 0.80, 0.85 > }

#declare raio = 2.000;

#declare tinta_A = 
  texture {
    pigment { color rgb < 0.10, 0.80, 1.00 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare tinta_B = 
  texture {
    pigment { color rgb < 1.00, 0.80, 0.10 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#macro folha()
  cylinder {
    < 0.00, 0.00, 0.00 >,
    < 2.00, 0.00, 0.00 >,
    0.1
    texture { tinta_B }
  }
#end

#macro primeiro_pai(gama)
  union {
    cylinder {
    < 0.00, 0.00, 0.00 >,
    < 2.00, 0.00, 0.00 >,
    0.1
    texture { tinta_A }
    }
    object { folha() rotate <0,gama,0> translate <2,0,0> }

  }
#end

#macro segundo_pai(beta, gama)
  union {
    cylinder {
    < 0.00, 0.00, 0.00 >,
    < 2.00, 0.00, 0.00 >,
    0.1
    texture { tinta_B }
    }
    object { primeiro_pai(gama) rotate <0,beta,0> translate <2,0,0> }
  }
#end

#macro talher(alfa, beta, gama)
  union {
    cylinder {
      < 0.00, 0.00, 0.00 >,
      < 3.00, 0.00, 0.00 >,
      0.3
      texture { tinta_A }
    }
    object { segundo_pai(beta, gama) rotate <0,alfa,0> translate <3,0,0> }
  }

#end

#declare nh = 3;     
#declare nv = 3;     
#declare nquadros = nh * nv;
#declare cini = 0.0;
#declare cfim = 1.0;
#declare cpasso = (cfim - cini)/(nquadros - 0.9999); 
#declare ck = cini;
#declare iv = 0;     

#declare c0 = 0.0;
#declare c1 = 0.25;
#declare c2 = 0.5;
#declare c3 = 0.75;
#declare c4 = 1.0;

#macro quadro(ck)

      #if ((ck >= c0) & (ck < c1))
        #declare rr = (ck - c0) / (c1 - c0);
        #declare ss = (c1 - ck) / (c1 - c0);
        #declare alfa = ss * 0 + rr * 45;
        #declare beta = ss * 0 + rr * 0;
        #declare gama = ss * 0 + rr * 45;
      #end
      #if ((ck >= c1) & (ck < c2))
        #declare rr = (ck - c1) / (c2 - c1);
        #declare ss = (c2 - ck) / (c2 - c1);
        #declare alfa = ss * 45 + rr * 45;
        #declare beta = ss * 0 + rr * -90;;
        #declare gama = ss * 45 + rr * 45;
      #end
      #if ((ck >= c2) & (ck < c3))
        #declare rr = (ck - c2) / (c3 - c2);
        #declare ss = (c3 - ck) / (c3 - c2);
        #declare alfa = ss * 45 + rr * 45;
        #declare beta = ss * -90 + rr * -90;
        #declare gama = ss * 45 + rr * -90;
      #end
      #if ((ck >= c3) & (ck < c4))
        #declare rr = (ck - c3) / (c4 - c3);
        #declare ss = (c4 - ck) / (c4 - c3);
        #declare alfa = ss * 45 + rr * 0;
        #declare beta = ss * 0 + rr * 0;
        #declare gama = ss * 0 + rr * 0;
      #end
      object { talher(alfa, beta, gama) } 

#end

object{quadro(clock)}

object{quadro(mod(clock+0.30,10.0)) translate <1,1,1>}

// Original camera parameters:
// #local cam_ctr = <2,2,2>
// #local cam_vec = (<1.00,3.00,20.0>-<2,2,2>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<2,2,2>,<10,10,10>,20.0,z,1.0)