// Last edited on 2009-08-26 13:05:16 by stolfilocal
// Processed by remove-cam-lights

#macro eixo(ponta,cor,nome)
  union{
    sphere{ <0,0,0>, 0.02 }
    cylinder{ <0,0,0>, 0.91*ponta, 0.02 }
    cone{ 0.90*ponta, 0.06, ponta, 0.00 }
    texture{ pigment{ color rgb cor } finish{ ambient 0.5 diffuse 0.5 } }
  }
#end
#macro eixos(tamanho)
  union{
    object{ eixo( <tamanho,0,0>, <1.0,0.2,0.2>, "X") }
    object{ eixo( <0,tamanho,0>, <0.0,0.8,0.0>, "Y") }
    object{ eixo( <0,0,tamanho>, <0.3,0.3,1.0>, "Z") }
  }
#end

background{ color rgb < 0.75, 0.80, 0.85 > }

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

#declare tx_fosca =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_base =
  texture {
    pigment { color rgb < 0.2, 0.2, 0.2> }
    finish { diffuse 0.9 ambient 0.1 }
}

#declare tx_handle =
  texture {
    pigment { color rgb < 0.4, 0.4, 0.4> }
    finish { diffuse 0.9 ambient 0.2 }
}

#declare tx_body =
   texture {
      pigment { color rgb <0.5,0.5,0.5> }
      finish{ diffuse 0.9 reflection ambient 0.1 }
}
#declare tx_inside =
   texture {
      pigment { color rgb <0.7,0.7,0.7> }
      finish{ diffuse 0.2 reflection 0.8*< 1.00, 1.00, 1.00 > ambient 0.1 }
}

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.90, 0.70 > }
    finish{ diffuse 0.1 reflection 0.8*< 1.00, 0.90, 0.70 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.97, 0.98, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_cutter =
  texture{
    pigment{ color rgb < 0.8, 0.8, 0> }
    finish{ diffuse 0.9 reflection ambient 0.1 }

  }

#declare base =
 cone{<0, 0, -1.5>, 1.2, <0, 0, -1>, 1 }

#declare body =
 cylinder{<0,0,-1>, <0,0,1>, 1}

#declare top_hole =
 cylinder{ < 0,0,0.95>, <0,0,1.05>, 0.95}

#declare in_sphere =
 sphere { <0,0,1>, 0.5}

#declare top =
 difference {
  sphere {<0,0,1>, 1}
  sphere {<0,0,1>, 0.9}
 }

#declare oj =
 cylinder { <0,0,0.75>, <1.2, 0, 0.60>, 0.08 }

#declare or =
 cylinder { <0,0,0.75>, <1.201, 0, 0.60>, 0.07 }

declare handle =
 union {
  cylinder {<0,0,0>, <0, 1.2, 0.0>, 0.1}
  box { <-0.1, 1.201, 0.1>, <0.1, 1.099, -0.501> }
  cylinder {<0,1.1,-0.4>, <0,1.5,-0.4>, 0.1}
  sphere {<0,1.5,-0.4>, 0.101}
 }

#declare scene =
 union {
  object { base texture{tx_base}}
  difference {
   object { body texture{tx_body}}
   object { top_hole texture{tx_inside} }
  }
  object {in_sphere texture{tx_inside}}
  object {top texture {tx_vidro}}
  difference {
   object {oj texture {tx_inside}}
   object {or texture {tx_body}}
  }
  object {handle texture {tx_handle} }
 }

#declare cutter =
 difference {
  box {<-5,-5,-5>, <5,5,5>}
  box {<0,0,10> , <10,10,-10>}
 }

intersection {
 object {scene}
 object {cutter texture {tx_cutter}}
 translate -1*z
}

object {scene translate <0,0,4> }

// Original camera parameters:
// #local cam_ctr = <0.00,0.00,2.00>
// #local cam_vec = (<14.00,7.00,3.5>-<0.00,0.00,2.00>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<0.00,0.00,2.00>,0.5*11.0,<10,10,7>,11.0,z,1.2)