// 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  <  10.00, 20.00, 1.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.10, 0.80, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_B = 
  texture {
    pigment { color rgb < 1.00, 0.00, 0.10 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_C = 
  texture {
    pigment { color rgb < 0.00, 1.00, 0.10 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

  
#declare cor_cristal = 
 pigment {color rgb <0.00, 0.00, 0.00>}

#declare cor_espelho = 
 pigment {color rgb <0.01, 0.01, 0.01>}

#declare tx_cristal =
  texture{
    finish{
      ambient 0.1 diffuse 0.1 reflection 0.25
      specular 1 roughness 0.001
    }
    pigment{color rgb <1.00, 0.50, 0.50> filter 1}
  } 
 
#declare tx_espelho =
  texture{
   pigment{rgb <0.00, 0.80, 0.80>}
   finish{
      ambient 0.05 diffuse 0.05 
      reflection rgb <0.80, 0.80, 0.80>
      specular 0.20 roughness 0.05
    }
  }


#declare predio =
union{
    #declare i = 0;
    #while (i < 4)
      #declare a = 3 - 0.2*i;
      #declare b = 0.2*i;
      #declare h = i;
      #declare andar = 
        box {<b, a, h>, <a, 0, h+1>
	texture {tinta_A}
	}
      object{andar}
      #declare i = i +1;
    #end
    }

#declare janelas =
union{
    #declare i = 0;
    #while (i < 4)
      #declare a = 3 - 0.2*i;
      #declare b = 0.2*i;
      #declare h = i;
      #if (i < 2)
         #declare janela1 = 
           box {<h+0.8, 3, 0.3>, <h+1.2, 0, 0.7>
	         texture {tinta_B}
	       }
	 object{janela1}
      #else 
          #if (i < 5)
            #declare janela2 = 
            sphere{<b-0.2, 2.8 ,1.5>, 0.1  
	          texture {tx_cristal}
	         }
            object{janela2}
          #else
	     #if (i < 7)
	        #declare janela3 = 
                box {<b, a, h>, <a, 0, h+1>
	             texture {tx_espelho}
	        }
             //   object{janela3}
	     #else 
	       #declare janela4 = 
                   box {<b, a, h>, <a, 0, h+1>
	                texture {tx_espelho}
	           }
              // object{janela4}
             #end
          #end
      #end  
      #declare i = i +1;
    #end
}
       
#declare portal =
  box {
    < 1.30, 4.00, 0.00 >,
    < 1.60, -1.00, 0.70 >
    texture {tinta_B}
    }

#declare topo1 = 
  lathe {
    linear_spline
    4,
    <0,0>, <4,4>, <2,4>, <5,9>
    translate <0.00, -9.00, 0.00>
    rotate -90*x
    texture {tx_cristal}
    interior {ior 1.1}
  }  
  
// Aqui está a cena, finalmente:
union{
difference{
   object {predio}
   object {portal}
   object {janelas}
}
}