// Last edited on 2003-10-22 00:54:42 by stolfi
#include "colors.inc"

global_settings { max_trace_level 10 }

// ======================================================================
// CÂMERA 

#declare ctr = < 0.00, 0.00, 0.00 >;
#declare camdir = < 20.00, 7.00, 5.00 >;

camera {
  location  ctr + 0.70*camdir  // Posição do observador.
  right     -1.00*x
  up        0.75*y
  sky       z                      // Qual direção é "para cima"?
  look_at   ctr  // 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 {
  100 * < 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 {
  100 * < 10.0, -30.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.6 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

// ======================================================================
// DESCRIÇÃO DA CENA 

background{ color SkyBlue }

#declare raio = 2.000;


  
#declare tx_cristal =
  texture {
    pigment{color White filter 1}
    finish {
      specular 1
      roughness 0.001
      ambient 0.1
      diffuse 0.1
      reflection 0.25      
    }
  }     
  
#declare tx_espelho =
  texture {
    pigment { color Gray50 }
    finish {
      specular 0.20
      roughness 0.05
      ambient 0.05
      diffuse 0.05
      reflection Gray50
    }
  }     

  
   
#declare anel =
  torus{5, 0.5
    rotate<90,0,0>
    texture{tx_espelho}
  }

#declare semi_esfera =
  intersection{
    sphere{<0,0,0>, 4.5
      texture{tx_cristal}
      hollow
    }
    box{<0,0,0>,<9,9,9>
      texture{tx_cristal}
      interior{ior 1.5}
      translate<-4.5,-4.5,0>
    }
    translate<0,0,-0.5>
    hollow   
  }

#declare entrada =
  cylinder{<0,0,0>,<7,0,0>,0.5
  translate<0,0,-0.4>
  }

plane {
  z,
  -0.5
  pigment { checker color Gray75 color Gray95 scale 5 }
  finish{ambient 0.1 diffuse 0.9 }
}    
      
// exibiçao  
union{
  difference{
    object{anel}
    object{entrada}
  }
  object{semi_esfera}  
}