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

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

#declare tx_1 =
  texture{
    pigment{ color rgb < 2.10, 0.00, 0.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_2 =
  texture{
    pigment{ color rgb < 0.75, 0.54, 0.06 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_3 =
  texture{
    pigment{ color rgb < 0.75, 0.7, 0.7 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare valores = array[10]
#declare valores[0] = (1-clock) * 8 + clock * 9;
#declare valores[1] = (1-clock) * 5 + clock * 7;
#declare valores[2] = (1-clock) * 1 + clock * 2;
#declare valores[3] = (1-clock) * 1 + clock * 3;
#declare valores[4] = (1-clock) * 1 + clock * 2;
#declare valores[5] = (1-clock) * 1 + clock * 2;
#declare valores[6] = (1-clock) * 1 + clock * 2;
#declare valores[7] = (1-clock) * 1 + clock * 2;
#declare valores[8] = (1-clock) * 1 + clock * 2;
#declare valores[9] = (1-clock) * 1 + clock * 2;

#declare roleta = seed(565);

#macro abaco(m,n,valores, prob)

  #local total = m;
  union{
    box {<n,-1,m+1.5>,<-1,0,-0.3> texture { tx_3 }}
    #while(m > 0)
      object{fileira(n, valores[total - m], prob) translate <0,0,m>}
      #local m = m - 1;
    #end
  }
#end

#macro fileira (n, valor, prob)
  union{
    #local k = 0;
    #local r = int(valor);
    #local f = valor - r;

    #while(k<n)

    #local def = (rand(roleta) < prob);

    #local vb = mod(r,2);

    #if (vb = 0)
    object { bit (f, def) rotate <0,0,f*-180> translate <k,0,0> }
    #local f = 0;
    #else
    object { bit (1-f, def) rotate <0,0,(1-f)*-180>  translate <k,0,0> }
    #end
    #local r = int(r/2);
    #local k = k+1;
    #end
  }
#end

#macro bit (valor, defeito)
 union {
  #if(defeito = 0)
        difference {
          sphere{
            < 0.00, 0.00, 0.0 >, 0.5 texture { tx_2 }
            }
          box{< 1,1,1>, < 0,-1,-1>}
          }
  #end
  #if(defeito = 1)
    sphere{
          < 0.00, 0.00, 0.0 >, 0.0 texture { tx_2 }
          }
  #end
  }
#end

union{
  object { abaco(6,5,valores, 0.2) translate<0,4,-2>}
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 20.0;
#declare dir_camera = < 0.00, 5.00, 0.00 >;
#declare dist_camera = (5.0*clock)+7.00;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)