// Last edited on 2004-01-22 10:39:04 by stolfi
// Rede de Pacotes - por Gilberto Sgarbi Filho - RA 001754
// ======================================================================

#declare ctr = <0, 5, 0>;
#declare camDir = < 10, -4, 30 >;

camera {
  location   ctr + 0.95*camDir
  right      -1.00*x
  up         0.75*y
  sky        y
  look_at    ctr
}
 

// ======================================================================
// FONTES DE LUZ

light_source {
  10 * < +50.0, +30.0, +50.0 >              // Posição da lâmpada.
  color rgb 1.2 * < 1.00, 1.00, 1.00 >   // Intensidade e cor da luz.
} 

light_source {
  10 * < +50.0, -10.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.5 * < 1.00, 1.00, 1.00 >   // Intensidade e cor da luz.
} 

// ======================================================================
// DESCRIÇÃO DA CENA 

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


#declare gerador1=seed(057829);
#declare gerador2=seed(498137);
#declare gerador3=seed(777777);
  
#declare pacotes =
  union{
  #declare i=1;
  #while(i<=10)
    #if (mod(i,2)=1)  
      box{<5, 12, 10 - 1.5*i >, <3, 11, 9 - 1.5*i>
    	  pigment {color rgb <rand(gerador2),rand(gerador3),rand(gerador1)>}}
    #else
      sphere{<0, 0, 12 - 2*i>, 0.5 + 0.07*i
             pigment {color rgb <rand(gerador1),rand(gerador2),rand(gerador2)> }}
    #end
    #declare i=i+1;
  #end
  }

#declare grade =
  union{
    #declare j=1;
    #while(j<=10) 
      cylinder{<5, 11.5, 9-j>, <4.9, 11.5, 6-j>,0.05			// Linhas horizontais
          pigment {color rgb <0,0,0>}
      }
      #declare i=2;
      #while(i<=2)
        cylinder{<5, 11.5, 9-j>, <4.9, 11.5 - 2.5*i, 9-j>,0.05		// Linhas verticais
            pigment {color rgb <0,0,0>}
        }
        #declare i=i+1;
      #end
      
      #declare j=j+2;
    #end
  }
  
      
// Cena:
union {

  object { pacotes }
  object { grade }
}