// Last edited on 2003-04-12 05:03:38 by stolfi
#include "textures.inc"
#include "colors.inc"    // The include files contain
#include "stones.inc"    // pre-defined scene elements
#include "shapes.inc"
#include "glass.inc"
#include "metals.inc"
#include "woods.inc"

background{ color rgb < 0.00, 0.03, 0.15 > }

light_source {
  12*< 10, 10.00, -7.00 >
  color rgb 1.2*< 1.00, 1.00, 1.00 >
} 
light_source {
  12*< -5, 3.00, -10.00 >
  color rgb 0.9*< 1.00, 1.00, 1.00 >
} 

camera {
    location 0.85*< 7, 7, -10>
    right -0.60*x up 0.80*y
    sky       <  0.00, 1.00, 0.00 >
    look_at  <0, 4,  0>
 }

#declare cor_cristal = < 0.20, 0.90, 1.00 >;
#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_espelho = < 0.7, 0.7, 0.7 >;
#declare tx_espelho =
  texture{
    pigment{ rgb cor_espelho }
    finish{
      ambient 0.05 diffuse 0.05
      reflection cor_espelho
      specular 0.02 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 tinta_C = //marrom
  texture {
    pigment { color rgb < 1, 0.70, 0.40 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

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

#declare plano =
  plane { <0, 1, 0>, -1
   pigment {
     checker color Red, color Blue
   }
 }
  
#declare esfera =
  sphere {
    <0,0,0>,
    1
    texture { tinta_A }
  }

#declare nariz =
  cone {
    <0, 0, 0>, .2
    <0, 0, -1.2>, 0
    translate <0,4,-.9>
    texture { Silver_Metal }
  }

#declare pontas0 =
  union  {
    object { nariz }
    object { nariz rotate <0,90,0>}
    object { nariz rotate <0,-90,0>}
    object { nariz rotate <0,180,0>}
    translate <0,-4,.9>
  }

#declare pontas =
  union {
    object { pontas0 }
    object { pontas0 rotate <0,0,90> }
    object { pontas0 rotate <45,0,90> }
    object { pontas0 rotate <0,0,45> }
    object { pontas0 rotate <0,0,-45> }
  }

#declare bomba0 =
  union {
    object { esfera translate <0,4,0> texture { Silver_Metal } }
    object { pontas translate <0,4,.9> scale .9}
  }

#declare bomba =
  object { bomba0 translate <-3,-3,.5> }

#declare caixa1 =
  box {
    <0, 0,-3>,  // Near lower left corner
    < 6, 6, 3>   // Far upper right corner
    texture {
       tinta_C
    }
  }

#declare vidros =
  union{
    box {
      <0.5, 0.5,-3.01>,  // Near lower left corner
      < 2.5,5.5,-2.99>   // Far upper right corner
      texture {
  	tx_cristal
      }
    }
    box {
      <3.5, 0.5,-3.01>,  // Near lower left corner
      <5.5,5.5,-2.99>   // Far upper right corner
      texture {
  	tx_cristal
      }
    }
  }

#declare caixad =
  difference {
    object { caixa1 }
    object { vidros }
  }

#declare frente =
    box {
      <0,0,-3.01>,  // Near lower left corner
      <6,6,-2.99>   // Far upper right corner
      texture {
  	tx_cristal
      }
    }

#declare prat =
    box {
      <0,2.98,-2.98>,  // Near lower left corner
      <6,3.02,3>   // Far upper right corner
      texture {
  	tinta_C
      }
    }

#declare caixadir =
  union {
    object { caixad }
    object { vidros }
    object { prat   }
  }

#declare caixae =
  difference {
    object { caixa1 }
    object { frente }
  }

#declare caixaesq =
  union {
    object { caixae translate <-6,0,0>}
    object { frente translate <-6,0,0>}
  }

union {
  // Caixas deslocadas para permitir visualização melhor da bomba 
  object { caixaesq translate 0.7*<-10,0,15>  }
  object { caixadir translate 0.7*<-10,0,15> }
  object { bomba }
  object { plano }
}