// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.4, 0.6, 0.8 > } #declare tx_pele = texture{ pigment{ color rgb < 0.70, 0.70, 0.70 > } } #include "textures.inc" #declare parte_perna = cylinder{ <0, 0, -5>, <0, 0, 0>, 0.5 texture{ tx_pele } } #declare artic_perna = sphere{ <0, 0, 0>, 0.5 texture{ tx_pele } } #declare pe = sphere{ <0, 0, 0>, 0.15 texture{ tx_pele } } #macro perna_inf(a) union{ object{artic_perna} object{parte_perna} object{artic_perna translate<0, 0, -5>} object{pe scale<6, 20, 1> translate<0, 2.25, 0> rotate<-a, 0, 0> translate<0, 0, -5.5>} } #end #macro perna(a1, a2) union{ object{perna_inf(a2) rotate<-a1, 0, 0> translate<0, 0, -5>} object{parte_perna} object{artic_perna} } #end #declare parte_braco = cylinder{ <0, 4, 0>, <0, 0, 0>, 0.4 texture{ tx_pele } } #declare artic_braco = sphere{ <0, 0, 0>, 0.4 texture{ tx_pele } } #declare mao = sphere{ <0, 0, 0>, 0.8 texture{ tx_pele } } #declare braco_inf = union{ object{artic_braco} object{parte_braco} object{mao scale<1, 0.75, 0.75> translate<0,4,0>} } #macro braco(a) union{ object{braco_inf scale<1, 0.9, 1> rotate<0, 0, -a> translate<0,4,0>} object{parte_braco} object{artic_braco} } #end #declare pescoco = cylinder{ <0, 0, 2>, <0, 0, 0>, 0.5 texture{ tx_pele } } #declare cabeca = sphere{ <0, 0, 0>, 2 texture{ tx_pele } } #declare tronco = sphere{ <0, 0, 0>, 2 texture{ tx_pele } } #declare chapeu = union{ cylinder{<0, 0, 0.2>, <0, 0, 0>, 3.5 pigment{ color rgb <0, 0, 0> }} cylinder{<0, 0, 2>, <0, 0, 0>, 1.75 pigment{ color rgb <0, 0, 0> }} } #macro corpo(apd1, apd2, apd3, apd4, ape1, ape2, ape3, ape4, abd1, abd2, abd3, abd4, abe1, abe2, abe3, abe4) union{ object{perna(apd3, apd4) rotate<-apd2, -apd1, 0> translate<2, 0, 0>} object{perna(ape3, ape4) rotate translate<-2, 0, 0>} object{braco(abd4) rotate<0, -15, 0> rotate< abd3, 0, 0> rotate<0, abd2, 0> rotate<0, 0, -abd1> translate<1.5, 0, 10>} object{braco(abe4) rotate<0, 15, 0> rotate<-abe3, 0, 0> rotate<0, -abe2, 0> rotate<0, 0, abe1> translate<-1.5, 0, 10>} object{tronco scale<1.5, 1, 3.25> translate<0, 0, 4.5>} object{pescoco translate<0, 0, 10>} object{cabeca translate<0, 0, 13.5>} object{chapeu translate<0, 0, 14.5>} } #end #declare NQ=9; #declare abd2=array[NQ]; #declare abd2[0]=80; #declare abd2[1]=130; #declare abd2[2]=180; #declare abd2[3]=230; #declare abd2[4]=270; #declare abd2[5]=abd2[3]; #declare abd2[6]=abd2[2]; #declare abd2[7]=abd2[1]; #declare abd2[8]=abd2[0]; #declare abd3=array[NQ]; #declare abd3[0]=60; #declare abd3[1]=50; #declare abd3[2]=40; #declare abd3[3]=60; #declare abd3[4]=80; #declare abd3[5]=abd3[3]; #declare abd3[6]=abd3[2]; #declare abd3[7]=abd3[1]; #declare abd3[8]=abd3[0]; #declare abe2=array[NQ]; #declare abe2[0]=100; #declare abe2[1]=50; #declare abe2[2]=0; #declare abe2[3]=-50; #declare abe2[4]=-100; #declare abe2[5]=abe2[3]; #declare abe2[6]=abe2[2]; #declare abe2[7]=abe2[1]; #declare abe2[8]=abe2[0]; #declare abe3=array[NQ]; #declare abe3[0]=80; #declare abe3[1]=60; #declare abe3[2]=40; #declare abe3[3]=50; #declare abe3[4]=60; #declare abe3[5]=abe3[3]; #declare abe3[6]=abe3[2]; #declare abe3[7]=abe3[1]; #declare abe3[8]=abe3[0]; #declare apd2=array[NQ]; #declare apd2[0]=45; #declare apd2[1]=23; #declare apd2[2]=0; #declare apd2[3]=-23; #declare apd2[4]=-45; #declare apd2[5]=apd2[3]; #declare apd2[6]=apd2[2]; #declare apd2[7]=apd2[1]; #declare apd2[8]=apd2[0]; #declare ape2=array[NQ]; #declare ape2[0]=apd2[0]; #declare ape2[1]=apd2[1]; #declare ape2[2]=apd2[2]; #declare ape2[3]=apd2[3]; #declare ape2[4]=apd2[4]; #declare ape2[5]=apd2[5]; #declare ape2[6]=apd2[6]; #declare ape2[7]=apd2[7]; #declare ape2[8]=apd2[0]; #declare apd3=array[NQ]; #declare apd3[0]=60; #declare apd3[1]=30; #declare apd3[2]=0; #declare apd3[3]=30; #declare apd3[4]=60; #declare apd3[5]=apd3[3]; #declare apd3[6]=apd3[2]; #declare apd3[7]=apd3[1]; #declare apd3[8]=apd3[0]; #declare ape3=array[NQ]; #declare ape3[0]=apd3[0]; #declare ape3[1]=apd3[1]; #declare ape3[2]=apd3[2]; #declare ape3[3]=apd3[3]; #declare ape3[4]=apd3[4]; #declare ape3[5]=apd3[5]; #declare ape3[6]=apd3[6]; #declare ape3[7]=apd3[7]; #declare ape3[8]=apd3[8]; #declare apd4=array[NQ]; #declare apd4[0]=0; #declare apd4[1]=-10; #declare apd4[2]=-20; #declare apd4[3]=-10; #declare apd4[4]=0; #declare apd4[5]=-apd4[3]; #declare apd4[6]=-apd4[2]; #declare apd4[7]=-apd4[1]; #declare apd4[8]=-apd4[0]; #declare ape4=array[NQ]; #declare ape4[0]=-apd4[0]; #declare ape4[1]=-apd4[1]; #declare ape4[2]=-apd4[2]; #declare ape4[3]=-apd4[3]; #declare ape4[4]=-apd4[4]; #declare ape4[5]=-apd4[5]; #declare ape4[6]=-apd4[6]; #declare ape4[7]=-apd4[7]; #declare ape4[8]=-apd4[8]; #declare tempo=array[NQ]; #declare tempo[0]=0; #declare tempo[1]=1/8; #declare tempo[2]=2/8; #declare tempo[3]=3/8; #declare tempo[4]=4/8; #declare tempo[5]=5/8; #declare tempo[6]=6/8; #declare tempo[7]=7/8; #declare tempo[8]=8/8; #macro interpola(f0,v0,f1,v1,f) #local ss = (f - f0) / (f1 - f0); #local rr = 1 - ss; (rr * v0 + ss * v1) #end #macro quadro_anterior(fase) #local i = 0; #while(i < NQ-1) #if((tempo[i] <= fase) & ((i = NQ-1) | (tempo[i+1] >= fase))) #local resp = i; #end #local i = i + 1; #end resp #end #macro corrida(fase) #local q = quadro_anterior(fase); #local ta = fase; #declare abd_2=interpola(tempo[q],abd2[q],tempo[q+1],abd2[q+1],ta); #declare abd_3=interpola(tempo[q],abd3[q],tempo[q+1],abd3[q+1],ta); #declare abe_2=interpola(tempo[q],abe2[q],tempo[q+1],abe2[q+1],ta); #declare abe_3=interpola(tempo[q],abe3[q],tempo[q+1],abe3[q+1],ta); #declare apd_2=interpola(tempo[q],apd2[q],tempo[q+1],apd2[q+1],ta); #declare ape_2=interpola(tempo[q],ape2[q],tempo[q+1],ape2[q+1],ta); #declare apd_3=interpola(tempo[q],apd3[q],tempo[q+1],apd3[q+1],ta); #declare ape_3=interpola(tempo[q],ape3[q],tempo[q+1],ape3[q+1],ta); #declare apd_4=interpola(tempo[q],apd4[q],tempo[q+1],apd4[q+1],ta); #declare ape_4=interpola(tempo[q],ape4[q],tempo[q+1],ape4[q+1],ta); object{corpo(5, apd_2, apd_3, apd_4, 5, ape_2, ape_3, ape_4, 90, abd_2, abd_3, 80, 90, abe_2, abe_3, 80)} #end #include "eixos.inc" union{ corrida(clock) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00,2.00 >; #declare raio_cena = 30.0; #declare dir_camera = < 15.00, 15.00, 5.00 >; #declare dist_camera = 30.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)