// Last edited on 2007-07-22 23:52:40 by stolfi
// Processed by remove-cam-lights

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

#declare cinza = 
    texture {
      pigment { color rgb < 0.50, 0.50, 0.50 > }
      finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
    }

#declare branco = 
    texture {
      pigment { color rgb < 1.00, 1.00, 1.00 > }
      finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
    }

#declare azul = 
    texture {
      pigment { color rgb < 0.40, 0.20, 0.80 > }
      finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
    }

#declare vermelho = 
  texture {
    pigment { color rgb < 0.70, 0.20, 0.20 > }
    finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.2 }
  }

#declare NUMERO_PECAS = 30; 
#declare TAMANHO_PECA = 20;
#declare TAMANHO_TABULEIRO = TAMANHO_PECA * NUMERO_PECAS;
#declare NUMERO_PEOES = 60;

#declare tab_cinza =
  box{
    <0,0,0>,<TAMANHO_PECA,1,TAMANHO_PECA>
    texture{cinza}
  }

#declare tab_branco =
  box{
    <0,0,0>,<TAMANHO_PECA,1,TAMANHO_PECA>
    texture{branco}
  }

#declare unidade_tabuleiro1 =
  union{
    object{tab_branco}
    object{
      tab_cinza
      translate <TAMANHO_PECA,0,0>
    }
  }

#declare unidade_tabuleiro2 =
  union{
    object{tab_cinza}
    object{
      tab_branco
      translate <TAMANHO_PECA,0,0>
    }
  }

#declare linha_tabuleiro1 = 
union{
  #declare i=0;
  
  #while(i<TAMANHO_TABULEIRO)
    object{
      unidade_tabuleiro1
      translate <-i,0,0>
    }
    
    #declare i=i+2*TAMANHO_PECA;
  #end
}

#declare linha_tabuleiro2 = 
union{
  #declare i=0;
  
  #while(i<TAMANHO_TABULEIRO)
    object{
      unidade_tabuleiro2
      translate <-i,0,0>
    }
    
    #declare i=i+2*TAMANHO_PECA;
  #end
}

#declare tabuleiro = 
  union{
    #declare linha = 1;
    #declare i=0;
    #while(i<TAMANHO_TABULEIRO)
      #if(linha = 1)
 object{
   linha_tabuleiro1
   translate <0,0,i>
 }
 #declare linha=2;
      #else
 object{
   linha_tabuleiro2
   translate <0,0,i>
 }
 #declare linha=1;
      #end
      #declare i=i+TAMANHO_PECA;
    #end
  }

#declare roleta = seed(4615);

#declare peao = 
      union{
 cone{
   <0,30,0>,5,<0,0,0>,TAMANHO_PECA/2-3
   texture{azul}
 }
 sphere{
   <0,33,0>,8
   texture{azul}
 }
      }

#declare peoes =
  union{
    #declare i=0;
    #declare totalPecas=0;
    #declare fileira = 0;
    #while(totalPecas<NUMERO_PEOES)
      #declare zpos = int(rand(roleta)*10);
      #while(zpos*fileira*TAMANHO_PECA>TAMANHO_TABULEIRO-TAMANHO_PECA)
 #declare zpos = int(rand(roleta)*10);
      #end
      object{
 peao
 translate <mod(i,2)*i*TAMANHO_PECA,0,zpos*fileira*TAMANHO_PECA>
      }
      
      #declare i=i+1;
      #declare totalPecas=totalPecas+1;
      #if(i>NUMERO_PECAS/2)
 #declare fileira=fileira+2;
 #declare i=0;
      #end
    #end
  }

object{
  union{
    object{
      tabuleiro
      translate <350,0,0>
    }

    object{
      peoes
      translate<-20-9*TAMANHO_PECA,1,10>
    }
  }
  rotate -20*z
  rotate 90*y
  translate <-280,30,150>
}

// Original camera parameters:
// #local cam_ctr = <1.00,1.00,4.00>
// #local cam_vec = (<1.00,1.00,-800.00>-<1.00,1.00,4.00>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<100.00,4.00,200.00>,<10,20,10>,900.0,y,1.0)