// André Luiz Gomide Papa - ra002793
// Laboratório 2 - MC930

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

camera {
  location  < 8.00, 4.00, 2.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 {
  10 * < +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 {
  10 * < +50.0, -10.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

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

#declare cor_cristal_A = <0.7 0.7 0.7>;

#declare tx_cristal = 
	texture{
		finish{
			ambient 0.1 diffuse 0.1 reflection 0.25
			specular 1 roughness 0.001
		}
		pigment {color cor_cristal_A filter 1}
		}
  

#declare cor_espelho_A = <0.5 0.5 0.5>;

#declare tx_espelho = 
	texture{
		pigment{rgb cor_espelho_A}
		finish{
			ambient 0.05 diffuse 0.05
			reflection cor_espelho_A
			specular 0.20 roughness 0.05
		}
	}
  
#declare cor_espelho_B = <1 0 0>;

#declare tx_espelho_B = 
	texture{
		pigment{rgb cor_espelho_B}
		finish{
			ambient 0.05 diffuse 0.05
			reflection cor_espelho_B
			specular 0.20 roughness 0.05
		}
	}


#declare base = 
torus{
	2.5,0.5
	texture{tx_espelho}
	rotate 90 * x
}

#declare meio = 
lathe{
linear_spline
5
<2.5,0.5>,
<2.5,1>,
<2.7,1.25>,
<2.5,1.5>,
<2.5,0.5>
rotate 90 * x
texture{tx_cristal}
interior {ior 1.5}
}

#declare bola = 
sphere{
<2.5,1.75,0>,0.25
texture{tx_espelho_B}
rotate 90 * x
}

plane {z,0
	texture{
		pigment{checker <1,1,1>,<0,0,0>}
		finish{ambient 0.1 diffuse 0.9}
		scale 2
		}
	translate <0,0,-3>
	}

// Aqui está a cena, finalmente:

	object{base}
	object{meio}
	object{bola}
	object{bola rotate 30 * z}
	object{bola rotate 60 * z}
	object{bola rotate 90 * z}
	object{bola rotate 120 * z}
	object{bola rotate 150 * z}
	object{bola rotate 180 * z}
	object{bola rotate 210 * z}	
	object{bola rotate 240 * z}
	object{bola rotate 270 * z}
	object{bola rotate 300 * z}
	object{bola rotate -30 * z}