// 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  <  80.00, 20.00, 8.00 >  // Posição do observador.
//  location  <  0.00, 50.00, 8.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 cor da 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 cor da luz.
} 

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

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

#declare cor_coroa = < 1.0, 1.0, 0.0>;



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

#declare tinta_B = 
  texture {
    pigment { color rgb <0, 0.5, 0.9> filter 1}
    finish { diffuse 0.1 specular 1 reflection 0.25 
             roughness 0.001 ambient 0.1 }
  }
  

plane { z, 0
  texture {
    pigment { checker <0,.8,0>, <1,1,1> }
    finish { ambient 0.1 diffuse 0.9 }
    scale 2.0 
  }
}
 
  #declare caixa_ext =
  box {
    < 55.00,0.00, 0.00 >, 
    < 0.00, 8.00, 12.00  > 
    texture { tinta_A }
  }

 #declare teto =
  box {
    < 55.40,-.40, 12.00 >, 
    < -.40, 8.40, 12.40  > 
    texture { tinta_A }
  }

  #declare caixa_int =
  box {
    < 54.50, 0.50, 0.50 >, 
    < 0.50, 7.50, 11.50  > 
    texture { tinta_A }
  }
  

   #declare janelas_laterais = 
    union {
      #declare i = 0;
      #while (i < 4)
	#declare j = 0;
	#while (j < 27)
	  #if (i = 0)
	    box { <5*j+4.5, -1, (1.8+3*i)> , 
	        <(5*j+.2), 9, (2.8+3*i)> 
	        texture { tinta_A }
            }
	  #else
	  box { <2*j+2, -1, (1.8+3*i)> , 
	        <(2*j+.2), 9, (2.8+3*i)> 
	        texture { tinta_A }
	      }
	  #end
	  #declare j = j+1;
	#end
	  #declare i = i+1;
      #end
    }

#declare gera = seed(3451);
#declare janelas_frontais = 
    union {
      #declare i = 1;
      #while (i < 4)
	#declare j = 0;
	#while (j < 4)
	  #if (i < 3)
	    box {  <60 , (2*j+1.8), (rand(gera)+1+3*i)> , 
	        < -1, (2*j+.2), (2.8+3*i)> 
	        texture { tinta_A }
            }
	  #else
	    cylinder {
		<60 , (2*j+1), (rand(gera)+1+3*i)> , 
	        < -1, (2*j+.2), (2.8+3*i)>
    		0.50
    		texture { tinta_A }
	      }
	  #end
	  #declare j = j+1;
	#end
	  #declare i = i+1;
      #end
    }

    #declare cilindro1 = 
	cylinder {
	<56,1.5,2>,
	<53,1.5,2>, .5
	texture { tinta_A }
    }

   #declare cilindro2 = 
	cylinder {
	<56,6.5,2>,
	<53,6.5,2>, .5
	texture { tinta_A }
    }

   #declare cilindro3 = 
     cylinder {
	<55.2,4,2>,
	<54.7,4,2>, 1.5
	texture { tinta_B }
}
 
 #declare porta =
  box {
    < 55.20, 2.50, 0.00 >, 
    < 54.70, 5.50, 2.00  > 
    texture { tinta_B }
  }

// Aqui está a cena, finalmente:
union {
  difference {
    object { caixa_ext }
    object { caixa_int }
    object{janelas_laterais}
    object{janelas_frontais}
    object {cilindro1} 
    object {cilindro2} 
  }
  object {cilindro3}
  object {porta}
  object {teto}
}