// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-09-04 15:25:26 by stolfi

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

camera {
  location  <  4.00, 3.00, 3.00 >  // Posição do observador.
  right     -0.75*x                // Largura RELATIVA da imagem.
  up        1.00*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual direção é "para cima"?
  look_at   <  0.00, 0.00, 0.00 >  // 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 {
  2 * < +30.0, +60.0, +50.0 >              // Posição da lâmpada.
  color rgb 2.0 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 


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

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

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


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

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

#declare bola =
  sphere {
    < 0.00, 0.00, 0.00 >, 2.00 
    texture { tinta_A }
}

#declare bola_buraco =
  sphere {
    < 0.00, 0.00, 0.00 >, 1.90 
    texture { tinta_A }
}

#declare bola_corte =
  box {
    < -2.00, -2.00, 0.0 >,
    < 2.00, 2.00, 4.00 >
    texture { tinta_A }
}

#declare cubo =
  box {
    < 1.35, -1.35, -0.6 >,
    < -1.35, 1.35, 1.70 >
    texture { tinta_B }
}

#declare cubo_buraco =
  box {
    < 1.20, -1.20, -0.4 >,
    < -1.20, 1.20, 1.60 >
    texture { tinta_B }
}

#declare cubo_corte =
  box {
    < 1.40, -1.40, 0.2 >,
    < -1.40, 1.40, 4.00 >
    texture { tinta_B }
}

#declare cilindro = 
  cylinder {
    < 0.00, 0.00, -0.40 >,
    < 0.00, 0.00, 1.00 >,
    1.20
    texture { tinta_C }
  }

#declare cilindro_buraco = 
  cylinder {
    < 0.00, 0.00, -0.20 >,
    < 0.00, 0.00, 1.00 >,
    1.00
    texture { tinta_C }
  }

#declare cilindro_corte = 
  box {
    < 1.40, -1.40, 0.6 >,
    < -1.40, 1.40, 4.00 >
    texture { tinta_C }
  }


// Aqui está a cena, finalmente:


difference { 
  difference {
    object { bola } 
    object { bola_buraco }
  }
  object { bola_corte }
}

difference {
	difference {
		object { cubo }
		object { cubo_buraco }
	}
	object { cubo_corte }
}	

difference {
	difference {
		object { cilindro }
		object { cilindro_buraco }
	}
	object { cilindro_corte }
}