// 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  <  8.00, 6.00, 3.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.
} 
// 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 plano = 
plane { z, -0.5
	texture{
		pigment { checker <1,1,1> ,<0,0,0> }
		finish { ambient 01 diffuse 0.9 }
		scale 0.5
	}
}


#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.80, 0.10 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  
#declare tx_espelho = 
  texture{
   pigment { rgb < 1.00, 0.80, 0.10 >	}
   finish {
     ambient 0.05 diffuse 0.05
     reflection  < 1.00, 0.80, 0.10 >
     specular 0.2 roughness 0.05
  }
  }

#declare verde = <0,1,0>;
#declare vermelho = <1,0,0>;
#declare prata = <0.5,0.5,0.5>;

#declare tx_cris_verde = 
  texture {
   finish {
     ambient 0.1 diffuse 0.1  reflection 0.25
     specular 1 roughness 0.001
  }
    pigment { color verde filter 1  }
  }

#declare tx_cris_vermelho = 
  texture {
   finish {
     ambient 0.1 diffuse 0.1  reflection 0.25
     specular 1 roughness 0.001
  }
    pigment { color vermelho filter 1  }
  }


#declare tx_cris_prata = 
  texture {
   finish {
     ambient 0.1 diffuse 0.1  reflection 0.25
     specular 1 roughness 0.001
  }
    pigment { color prata filter 1  }
  }

#declare pedra1 =
  sphere{
    < 0.00, 0.00, 0.00 >, 0.20 
    translate <1.9,0,1.5>
    rotate z*20
    texture { tx_cris_verde }
  }

#declare pedra2 =
  sphere{
    < 0.00, 0.00, 0.00 >, 0.20 
    translate <1.9,0,0.5>
    rotate z*20
    texture { tx_cris_vermelho }
  }

#declare pedra3 =
  sphere{
    < 0.00, 0.00, 0.00 >, 0.20 
    translate <1.9,0,1.5>
    rotate z*70
    texture { tx_cris_prata }
  }
  
#declare furo = 
  cylinder {
    < 0, 0, 0 >,
    < 0.00, 0.00, 5>,
    1.50
    texture { tinta_B }
  }
  
#declare redondo = 
  torus {
    2
    0.15
    rotate 90*x
    texture { tx_espelho }
  }
  
#declare coroa = 
  lathe {5
	<2,0>,
	<2,0.75>,
	<2.15,0.9>
	<2,1.05>
	<2,2.0>
	rotate x*90
	texture { tx_espelho }
	}


#declare difer1 = 
 box {
<0,0,0>,
<7,7,7>
rotate x*45
translate <-3,0,1.2>
}

#declare difer2 = 
 box {
<0,0,0>,
<7,7,7>
rotate x*45
translate <-3,0,1.2>
rotate z*45
}

#declare difer3 = 
 box {
<0,0,0>,
<7,7,7>
rotate x*45
translate <-3,0,1.2>
rotate z*90
}

// Aqui está a cena, finalmente:

union{

difference { 
  union {
    object { plano }
//    object { pedra1 }
    object { redondo } 
    object { coroa }

   }
    object { difer1 }
    object { difer2 }
    object { difer3 }
  }
 object { pedra1 }
 object { pedra2 rotate -20*z}
 object { pedra2 rotate 20*z}
 object { pedra2 rotate 60*z}
 object { pedra3 }
 object { pedra3 rotate -100*z}
 }