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

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

camera {
  location  <  40.00, 20.00, 10.00 >  // Posição do observador.
  right     1.00*x                // Largura RELATIVA da imagem.
  up        -0.75*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.
} 
// 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 * < +50.0, -10.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

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

#declare raio = 2.000;

#declare tinta_A = 
  texture {
    pigment { color rgb < 0.50, 0.50, 0.50 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare transp = <0.5,0.5,0.5>;
#declare vidro = 
  texture {
    pigment { color transp filter 1 }
    finish { diffuse 0.1 specular 1 roughness 0.001 ambient 0.1 
             reflection 0.25}
  }

#declare janela =
  box {
    <10.501,-1,1>
    <10.500, 1,2>
    texture { vidro }
  } 

#declare porta =
  box {
    <10.501,-1,0>
    <10.500, 1,2.3>
  } 

#declare n_andares = 6;
#declare R = seed(647296);
#declare topo =
  union {
  box {
    < 2.5, 2.5,n_andares*3>
    <-2.5,-2.5,n_andares*3+3>
    texture { tinta_A }
  }
  object { janela translate <-8,0,n_andares*3> rotate 180*z}
  object { porta  translate <-8,0,n_andares*3>}
  translate <(rand(R)*21-10.5),(rand(R)*21-10.5),0>
}

// Aqui está a cena, finalmente:
union {
union {
  #declare andar = 0;
  #while (andar<n_andares)
    object { union {
    	       box {
      		 < 10.5, 10.5,0>
      		 <-10.5,-10.5,3>
      		 texture { tinta_A }
    	       }
    	       #declare c_janela = 0;
    	       #while (c_janela<4)
                 #declare R1 = 6*rand(R)-3;
      		 object { union {
  	                    #declare j = -3;
  	                    #while (j<=3)
 			      #if ((andar = 0) & (j = int(R1)))
    	                        object { porta
                                         translate<0,2.8*j,0>}
			      #else
    	                        object { janela
                                         translate<0,2.8*j,0>}
			      #end
                            #declare j = j+1;
                            #end
                         }
               	         rotate c_janela*90*z}
      		  #declare c_janela = c_janela+1;
    		  #end   
  	     } 
             translate<0,0,3*andar>}
  #declare andar = andar+1;
  #end
  object { topo }
}
 translate <0,0,-8>
}