// Last edited on 2003-12-14 20:19:58 by stolfi
// Exemplo de arquivo de descricao de cena para POV-ray

#include "colors.inc"


// ======================================================================

#declare ctr = < 0.00, 0.00, 0.00 >;
#declare camDir = < 0.00, 10.00, 30.00 >;

camera {
  location   ctr + 1.00*camDir
  right      -0.65*x
  up         0.65*y
  sky        y
  look_at    ctr
}
 

// ======================================================================
// 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, 20.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 cor_cristal = <0.90, 0.0, 0.0>;
#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 cor_cristal2 = <0.50, 0.60, 0.80>;
#declare tx_cristal2=
 texture{
   finish{
      ambient 0.1 diffuse 0.1 reflection 0.25  specular 1 roughness 0.001
   }
   pigment { color cor_cristal2 filter 1}
 }
 
 #declare cor_espelho = <1.00, 0.80, 0.10>;
 #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_espelho2 = <0.10, 0.80, 1.00>;
 #declare tx_espelho2 =
  texture{
   pigment{ rgb cor_espelho2 }
   finish{
    ambient 0.05 diffuse 0.05 reflection cor_espelho2  specular 0.20 roughness 0.05
   }
  }
 
   #declare cor_espelho3 = <1.0, 1.0, 1.00>;
 #declare tx_espelho3 =
  texture{
   pigment{ rgb cor_espelho3 }
   finish{
    ambient 0.05 diffuse 0.05 reflection cor_espelho2  specular 0.20 roughness 0.05
   }
  }

#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 vermelho = 
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

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

#declare olho =
union{
  sphere {
    < 0, 0.00, 0>, 3.0 
    texture { tx_cristal2 }
  }
  
  sphere {
     <0,0,0>, 3.0
     texture { tx_espelho} 
     scale <0.3,1, 0.5>
     rotate -30*z
  }
}
  
#declare junta =
 intersection{
  box {
    <-0.5,-0.5,0.5>
    <0.5,0.5,-0.5>
  }
  sphere {
    <0,0,0>,
    0.6
  }
  }

  
#declare parte = 
union{
  object { junta }
  object { junta
    translate <0,5,0>
  }
  intersection{
  box {
    <-0.5,0,0.5>
    <0.5,5,-0.5>
  }
  cylinder {
    <0,0,0>
    <0,5,0>,
    0.6
  }
  
  }//inter
  }//union

  
#declare lv =
union{
  union{
    object { parte
    }  
    object {parte
      scale <1,0.8,1>
      rotate -90*z
    }  
    texture {tx_cristal}
    scale <1.60, 1.5, 1.2>
  }
  
  union{
    object { parte
      scale <1,0.8,1>
    }  
    object {parte
      scale <1,0.8,1>
      rotate -90*z
    }  
    texture { tx_espelho3 }
    scale <1.55, 1.45, 1.15>
    
  }
  translate <-4,-4,0>
}

union{
  object {olho}
  object {lv} 
  rotate 30*z 
}

  box {
    <0,0,0>
    <20, 0.1, 20>
    pigment { checker color Black, color White }
    translate <-10, -9, -15>
  }