// Last edited on 2007-04-01 20:31:48 by stolfi
// Processed by remove-cam-lights

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

#declare bbranco = 
  texture {
    pigment { color rgb < 1.00, 0.90, 0.90 > }
    finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
  }
  
#declare bpreto = 
  texture {
    pigment { color rgb < 0.40, 0.10, 0.10 > }
    finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
  }
  
#declare cor1 = 
  texture {
    pigment { color rgb < 0.10, 1.0, 0.10 > }
    finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
  }
  
#declare cor2 = 
  texture {
    pigment { color rgb < 0.10, 0.10, 1.0 > }
    finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
  }
  
#declare baserei =
 cylinder {
 <+0, +0, +0.5 >,
 <+0, +0, +0 >, 0.4

 }
 
#declare conerei =
 cone {
 <+0, +0, +0.5 >, 0.4
 <+0, +0, +2 >, 0

 } 
  
#declare bolarei =
 sphere {
 <+0, +0, +2 >, 0.3

 }

#declare coroarei =
 cylinder {
 <+0, +0, +2.15 >,
 <+0, +0, +2.35 >, 0.2

 }
 
#declare rei =
 union {
  object { baserei}
  object { conerei}
  object { bolarei}
  object { coroarei}
  translate <0.5,0.5,0.2>
  }

#declare basetorre =
 cylinder {
 <+0, +0, +0.5 >,
 <+0, +0, +0 >, 0.4

 }
 
#declare meiotorre =
 cylinder {
 <+0, +0, +0.5 >,
 <+0, +0, +2 >, 0.35

 }
 
#declare torre = 
 union {
  object { basetorre}
  object { meiotorre}
  translate <0.5,0.5,0.2>
  }

#declare basepeao =
 cylinder {
 <+0, +0, +1.5 >,
 <+0, +0, +0 >, 0.2

 }
 
#declare bolapeao =
 sphere {
 <+0, +0, +1.5 >, 0.3

 }
 
#declare peao =
 union {
  object { basepeao}
  object { bolapeao}
  translate <0.5,0.5,0.2>
  }
 
#declare branco =
 box {
 <+0, +0, +0>
 <+1, +1, +0.2>
 texture { bbranco}
 }
 
#declare preto =
 box {
 <+0, +0, +0>
 <+1, +1, +0.2>
 texture { bpreto}
 }
 
#declare suporte =
 cylinder {
 <0,0,0>,
 <0,0,5>, 0.1
 texture { bpreto}
 }
 
object { suporte}
object { suporte
 translate <10,10,0>}
object { suporte
 translate <0,10,0>}
object { suporte
 translate <10,0,0>}

#declare i=0;
#declare j=0;
#declare fonte = seed(123456);

#while (i<10)
 
 #while (j<10)
  
  #if (mod((i+j),2)=0)
   object { branco
     translate <i,j,0>}
   
   #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i,j,0>
       texture {cor1} }
     #else 
     object { rei
       translate <i,j,0>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i,j,0>
       texture {cor1} }
     #else 
     object { torre
       translate <i,j,0>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i,j,0>
       texture {cor1} }
     #else 
     object { peao
       translate <i,j,0>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
    
   
  #else
   object { preto
     translate <i,j,0>}
     #if (mod(16845*rand(fonte),1)>0.62)
    #if (mod(84654*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i,j,0>
       texture {cor1} }
     #else 
     object { rei
       translate <i,j,0>
       texture {cor2} }
     #end
    #else
     #if (mod(546886*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i,j,0>
       texture {cor1} }
     #else 
     object { torre
       translate <i,j,0>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i,j,0>
       texture {cor1} }
     #else 
     object { peao
       translate <i,j,0>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
     
  #end
  #declare j=j+1;
  #end
 #declare i=i+1;
 #declare j=0;
 #end

#declare i=0;
#declare j=0;

#while (i<5)
 
 #while (j<10)
  #if (mod((i+j),2)=0)
   object { branco
     translate <i+10,j-10,5>}
     
     
    #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i+10,j-10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i+10,j-10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i+10,j-10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i+10,j-10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i+10,j-10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i+10,j-10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end   
     
     
  
  #else
   object { preto
     translate <i+10,j-10,5>}
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i+10,j-10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i+10,j-10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i+10,j-10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i+10,j-10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i+10,j-10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i+10,j-10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end  
  #end
  #declare j=j+1;
  #end
 #declare i=i+1;
 #declare j=0;
 #end
 

#declare i=0;
#declare j=0;
#while (i<5)
 
 #while (j<10)
  #if (mod((i+j),2)=0)
   object { branco
     translate <i-5,j+10,5>}
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i-5,j+10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i-5,j+10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i-5,j+10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i-5,j+10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i-5,j+10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i-5,j+10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
  #else
   object { preto
     translate <i-5,j+10,5>}
     
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i-5,j+10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i-5,j+10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i-5,j+10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i-5,j+10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i-5,j+10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i-5,j+10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
  #end
  #declare j=j+1;
  #end
 #declare i=i+1;
 #declare j=0;
 #end

 

#declare i=0;
#declare j=0;
#while (i<5)
 
 #while (j<10)
  #if (mod((i+j),2)=0)
   object { branco
     translate <i+10,j+10,5>}
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i+10,j+10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i+10,j+10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i+10,j+10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i+10,j+10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i+10,j+10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i+10,j+10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
  #else
   object { preto
     translate <i+10,j+10,5>}
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i+10,j+10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i+10,j+10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i+10,j+10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i+10,j+10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i+10,j+10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i+10,j+10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
  #end
  #declare j=j+1;
  #end
 #declare i=i+1;
 #declare j=0;
 #end
 

#declare i=0;
#declare j=0;
#while (i<5)
 
 #while (j<10)
  #if (mod((i+j),2)=0)
   object { branco
     translate <i-5,j-10,5>}
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i-5,j-10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i-5,j-10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i-5,j-10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i-5,j-10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i-5,j-10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i-5,j-10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
  #else
   object { preto
     translate <i-5,j-10,5>}
     #if (mod(168465*rand(fonte),1)>0.62)
    #if (mod(123254*rand(fonte),1)>0.9)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { rei
       translate <i-5,j-10,5>
       texture {cor1} }
     #else 
     object { rei
       translate <i-5,j-10,5>
       texture {cor2} }
     #end
    #else
     #if (mod(56568*rand(fonte),1)>0.65)
     #if (mod(123254*rand(fonte),1)>0.5)
     object { torre
       translate <i-5,j-10,5>
       texture {cor1} }
     #else 
     object { torre
       translate <i-5,j-10,5>
       texture {cor2} }
     #end
     #else
     #if (mod(123254*rand(fonte),1)>0.5)
     object { peao
       translate <i-5,j-10,5>
       texture {cor1} }
     #else 
     object { peao
       translate <i-5,j-10,5>
       texture {cor2} }
     #end
   
     #end
   
    #end
   
   #end
  #end
  #declare j=j+1;
  #end
 #declare i=i+1;
 #declare j=0;
 #end

// Original camera parameters:
// #local cam_ctr = <5.00,5.00,0.00>
// #local cam_vec = (<40.00,30.00,40.00>-<5.00,5.00,0.00>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<5.00,5.00,0.00>,<10,5,10>,50.0,z,1.0)