// 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  <  8.00, 4.00, 2.00 >  // Posição do observador.
  right     -1.0*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.80, 0.10 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

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

#declare tinta_D = 
  texture {
    pigment { color rgb < 0.90, 0.10, 0.10 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  
#declare bola =
  sphere {
    < 0.00, 0.00, 0.00 >, 2.00 
    texture { tinta_A }
  }
  
#declare furo = 
  cylinder {
    < -1.00, -2.00, -2.00 >,
    < +1.00, +2.00, +2.00 >,
    1.50
    texture { tinta_B }
  }
  
#declare bico = 
  cone {
    < 1, 3.2, 0 > , 0.6
    < 1.0, 5.5, 0 >, 0
    texture { tinta_B }
  }

#declare caixa1 =
   box{
        <2,-1,-1>,
        <0,1,1.0>
   texture { tinta_B}
}  

#declare base1 =
   box{ 
        <1.8,-0.8,-1.4>
        <0.2,0.8,-1>
        texture { tinta_A }    
}

#declare caixa2 =
   box{
        <2,1,-1.0>,
        <0,3,1.0>
   texture { tinta_A}
}  

#declare base2 =
   box{ 
        <1.8,1.2  ,-1.4>
        <0.2,2.8,-1>
        texture { tinta_A }    
}

#declare caixa3 =
   box{
        <1.8,3,-0.8>,
        <0.2,3.2,0.8>
   texture { tinta_C}
}  

#declare dobradica =
   cylinder{
             <2,1,-1>,
             <2,1,1>,
             0.05
   texture{ tinta_D}
}

#declare bloco1 =
  union{
         object{ caixa1 }
         object{ base1  }
         translate<-2,-1,0>
         rotate 60*z
         translate<2,1,0>
}

#declare bloco2 = 
  union{
         object {caixa2}
         object {base2}
}

#declare bigorna =

union{
  object { bloco1 }
  object { bloco2 }
  object { caixa3 }
  object { bico }
  object { dobradica }
}

// Aula 3

#declare cor_espelho = rgb<0.9,0.2,0.3>;
#declare tx_espelho = 
	texture{
		pigment{ rgb cor_espelho}
		finish{
		ambient 0.05 diffuse 0.05
		reflection cor_espelho
		specular 0.20 roughness 0.05
	}
}

#declare cor_cristal = Yellow;
#declare tx_cristal =
	texture{
		finish{
			ambient 0.1 diffuse 0.1 reflection 0.25
			specular 1 roughness 0.001
		      }
		pigment { color cor_cristal filter 1}
		}


#declare coroa =

lathe {
    linear_spline
    4,
    <2.5,1>, <3.0,1>, <3.0,1.5>, <2.5,1.1>
    pigment { Yellow }
    texture{ tx_cristal }
    interior{ior 1.5}	  
}

#declare chao=
plane{ z, 0
	texture{
		pigment{checker Black, White}
		finish {ambient 0.1 diffuse 0.9}
		scale 0.5
		}
	}

#declare arco1=

torus {
    3.2, 0.04              // major and minor radius
    rotate -90*x      // so we can see it from the top
    //pigment { Green }
    texture { tx_espelho}
  }

#declare arco2=

torus {
    3, 0.04              // major and minor radius
    rotate -90*x      // so we can see it from the top
    pigment { Blue }
  }

#declare fixacao=
	cone {
		<0,0,1.4>, 0.05
		<0.2,0,1.4> 0.05
		texture{ tx_espelho }
}

#declare fixacao2=
	cone{
		<0,0,1.4> 0.05
		<0,0.2,1.4> 0.05
		texture{ tx_espelho }
}

// Aqui está a cena, finalmente:

difference { 
union{
	object{chao}
	object{arco1 translate<0,0,1.4>}
	object{arco2 translate<0,0,1.1>}
	object{coroa rotate 90*x}
	object{fixacao translate<3,0,0>}
	object{fixacao2 translate<0,3,0>}
	rotate 15*y
	}
}