// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-09-04 15:25:26 by stolfi

#include "colors.inc"

// ======================================================================
// CÂMERA 

camera {
  location  <0, 30, -100.00 >  // Posição do observador.
  right     -0.75*x                // Largura RELATIVA da imagem.
  up        1.00*y                 // Altura RELATIVA da imagem.      
 // sky       z                      // Qual direção é "para cima"?
  look_at   <  0.00, 0.00, 0.00 >  // Para onde a câmera está apontando.
  rotate -30*y
} 
// Nota: os parâmetros "right" e "up" devem ter a mesma proporção
// que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile.

// ======================================================================
// 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 corda luz.
} 

light_source {
  10 * < -30.0, 30.0, -30.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

global_settings {
  assumed_gamma 1.0
}

// ----------------------------------------

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]
      [0.7 rgb <0.0,0.1,0.8>]
    }
  }
}

#declare amarelo = 
  texture {
    pigment { color rgb < 1.00, 1.00, 0.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }  
  
#declare azulclaro = 
  texture {
    pigment { color rgb < 0.00, 1.00, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  
  
#declare fileira = 
  union {
    #declare i=0;
       #while (i<10)
          #declare r=1+0.1*i;
	  #declare treco = 
	  #if (i=7)
	    box{<-r,-r,-r>,<r,r,r>}
	  #else
	    sphere{<0,0,0>,r}
	  #end
	  object{treco translate <3*i,i*i/5,0>}
	  #declare i = i+1;
	#end
	pigment{color rgb <1,0,0>}
    }
    
#declare predio = 
  box {
    < -10.00, 0.0, -10 >,
    < 10.00, 35.00, 10.00 >    
    pigment { Blue }
  }

    
#declare porta=
box{
  <6,16,-10.5>,
  <0,10,-11>
  texture { azulclaro }
}
#declare gerador = seed(123456);

#declare janelac = 
  union {
    #declare i=0;
       #while (i<5)
          #declare r=3*i;
	  #declare aleatorio = rand(gerador);
	  #declare treco =
	  #if (aleatorio<0.5)   
	   cylinder {
    		< r, 10.0, -10.0 >,
    		< r, 10.0, -10.5 >,
    		1.0
    		pigment { Yellow }
	   }	   
	  #else 
	  cylinder {
    		< r, 10.0, -10.0 >,
    		< r, 10.0, -10.5 >,
    		0.5
    		pigment { Red }
	   }
	   #end
	  object{treco}
	  #declare i = i+1;
	#end
	pigment{Yellow}
}

#declare janelaq = 
  union {
    #declare i=0;
       #while (i<5)
          #declare r=3*i;
	  #declare aleatorio = rand(gerador);
	  #declare treco = 
	  #if (aleatorio<0.5)   
	   box{
  		<r+1.4,15.4,-10>,
  		<r,14,-10.5>
  	   pigment { Green }
	   }
	   #else
	   box{
  		<r+2,16,-10>,
  		<r,14,-10.5>
  	   pigment { Magenta }
	   }
	   #end
	  object{treco}
	  #declare i = i+1;
	#end
	pigment{Yellow}
}
	
#declare tudo=  
union{
object{janelaq
translate<-6.8,+12,0>}
object {janelac
translate<-5.6,+13,0>}
object{janelaq
translate<-6.8,+5,0>}
object {janelac
translate<-5.6,+6,0>}
object{janelaq
translate<-6.8,-3,0>}

}

// ----------------------------------------

plane {
  y, -1
  pigment { color rgb <0.7,0.5,0.3> }
}

union{
object{predio
}
object{tudo}
object{porta
translate<-3,-10,0>}
object{tudo
rotate -90*y}
object{tudo
rotate 180*y}
object{tudo
rotate 90*y}
}