// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2010-03-04 15:44:01 by stolfi

// ======================================================================
// CORES E TEXTURAS

#include "textures.inc"

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

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

#declare tx_espelho = 
    texture{
          pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.5 }
          finish{ diffuse 0.005 reflection 0.25 ambient 0.1 specular 0.25 roughness 0.005 }
    }

#declare tx_xadrez =
    texture{
          pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
          finish{ diffuse 0.9 ambient 0.1 }
          scale 2.0
    }

#include "colors.inc"
#include "eixos.inc"

#declare phi = (sqrt(5) - 1) / 2;

#declare dodecaedro = intersection {
  plane{<1,0,phi>, 2}
  plane{<1,0,-phi>, 2}
  plane{<-1,0,phi>, 2}
  plane{<-1,0,-phi>, 2}
  
  plane{<phi,1,0>, 2}
  plane{<-phi,1,0>, 2}
  plane{<phi,-1,0>, 2}
  plane{<-phi,-1,0>, 2}
  
  plane{<0,phi,1>, 2}
  plane{<0,-phi,1>, 2}
  plane{<0,phi,-1>, 2}
  plane{<0,-phi,-1>, 2}
  texture { tx_espelho }
  interior {ior 2}
}

#declare octaedro = intersection {
  plane{<1,1,1>, 2}
  plane{<1,1,-1>, 2}
  plane{<1,-1,1>, 2}
  plane{<1,-1,-1>, 2}
  plane{<-1,1,1>, 2}
  plane{<-1,1,-1>, 2}
  plane{<-1,-1,1>, 2}
  plane{<-1,-1,-1>, 2}
  
  texture { tx_espelho }
  interior {ior 2}
}

#declare cubo =  intersection {
  plane{<1,0,0>, 2}
  plane{<-1,0,0>, 2}
  plane{<0,0,1>, 2}
  plane{<0,0,-1>, 2}
  plane{<0,1,0>, 2}
  plane{<0,-1,0>, 2}
  texture { tx_espelho }
  interior {ior 2}
}

#declare icosaedro = intersection {
  object {octaedro scale 0.935}
  object {dodecaedro}
}

#declare cuboctaedro = intersection {
  object {octaedro scale 1.15}
  object {cubo}
}

#declare chao =
    box{ <-20,-20,-1>, <+20,+20,0> }

union {
  object{ chao  translate < 0,0,-5 > texture{ tx_xadrez } }
  //object {octaedro scale 0.935 translate <5, 5, -4>} 
  //object {dodecaedro translate <9, 4, 4>}  
  object {icosaedro translate <5, 2, 4>}  
  //object{cubo translate <1, 8, 3>}
  object{cuboctaedro translate <0, 4, 4>}  
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 10.0;
#declare dir_camera = < 1.00, 1.00, 1.00 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)