// LAB DO DIA 16/11
// PATRICIA FARAH CARRIAO

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

camera {
  location  <  0.00, 30.00, 0.00 >  // Posição do observador.
  right     -1.00*x                // Largura RELATIVA da imagem.
  up        0.75*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual direção é "para cima"?
  look_at   <  0.00, 5.00, 5.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, +10.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.
} 

light_source {
  10 * < -50.0, -10.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.3 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 


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

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

#declare verde = 
  texture {
    pigment { color rgb < 0, 1, 0 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

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

#declare verm = 
  texture {
    pigment { color rgb < 1, 0, 0 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tempo=clock;

#if (tempo<0.25)
	#declare a= 60*clock;
	#declare b= 80*clock;	
	#declare c= 40*clock;
	#declare d= 40*clock;
	#declare e= 40*clock;
	#declare ca = 0;
#else
	#if (tempo<0.5)	
		#declare a= 15;
		#declare b= 20;	
		#declare c= 10;
		#declare d= 10;
		#declare e= 40*clock;
		#declare ca = 40*clock - 10;
	#else
		#if (tempo<0.75)
			#declare a= 15;	
			#declare b= 20;	
			#declare c= 10;
			#declare d= 10;
			#declare e= -40*clock+40;
			#declare ca = -40*clock + 30;
		#else
			#declare a= -60*clock+60;
			#declare b= -80*clock+80;	
			#declare c= -40*clock+40;
			#declare d= -40*clock+40;
			#declare e= -40*clock+40;
			#declare ca = 0;
		#end
	#end
#end


#declare tronco = box {<-3.5,0,-2>, <3.5,-2,4> texture {verde}}
#declare pesc = box {<-1,0,4>, <1,-2,5> texture {verde}}
#declare cab = box {<-3,0,5>, <3,-2,7> texture {verde}}

#declare corpo = 
union {
	box {<-3.5,0,-2>, <3.5,-2,4> texture {verde}}
	box {<-1,0,4>, <1,-2,5> texture {verde}}
	box {<-3,0,5>, <3,-2,7> texture {verde}}
}	

#declare caixa = box {<1.3,14,3.2>,<-1.3,12,4.2> texture {verm}}

#declare mao = 
	union {
		box { <-0.2,0,-0.5>, <0.2,1.5,0.5>  texture {azul}}
		cylinder { <0,1,0.5>, <0,1,1> 0.2 texture {azul}}
		cylinder { <0,1.5,0.3>, <0,2.2,0.3> 0.1 texture {azul}}
		cylinder { <0,1.5,0.1>, <0,2.2,0.1> 0.1 texture {azul}}
		cylinder { <0,1.5,-0.1>, <0,2.2,-0.1> 0.1 texture {azul}}
		cylinder { <0,1.5,-0.3>, <0,2.2,-0.3> 0.1 texture {azul}}
	}

#declare b11 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {verde}}
		object {mao rotate -a*z translate<0,3,0> }
		}	

#declare b12 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {azul}}
		object {b11 rotate b*z translate<0,3,0> }
		}	

#declare b13 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {verde}}
		object {b12 rotate c*z translate<0,3,0> }
		}	

#declare b14 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {azul}}
		object {b13 rotate d*x translate<0,3,0> }
		}	

#declare b21 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {verde}}
		object {mao rotate a*z translate<0,3,0> }
		}	

#declare b22 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {azul}}
		object {b21 rotate -b*z translate<0,3,0> }
		}	

#declare b23 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {verde}}
		object {b22 rotate -c*z translate<0,3,0> }
		}	

#declare b24 = 
	union { 
		cylinder { <0,0,0>, <0,3,0> 0.5 texture {azul}}
		object {b23 rotate d*x translate<0,3,0> }
		}	



union {
object {b14 translate<4,0,0> rotate e*x}
object {b24 translate<-4,0,0> rotate e*x}
object {caixa rotate ca*x}
object {corpo}
}