// Last edited on DATE TIME by USER // Processed by remove-cam-lights #include "colors.inc" #macro quadro(tt) background{ color rgb < 0.75, 0.80, 0.85 > } #declare raio = 2.000; #declare tx_granito = texture{ pigment{ granite } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare tx_marmore = texture{ pigment{ marble } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #macro pe(angulo) merge { difference { cone{ <0,0,0>, .25, -2*z, 0 } sphere {<0,0,0>, .5} pigment{Red} } sphere {<0,0,0>, .5 pigment{Gray} } rotate angulo*x } #end #macro anteperna(ang_ap, ang_pe) // anteperna, pe merge { difference { cone{ <0,0,0>, .5, -3*z, .25 } sphere {<0,0,0>, .75} sphere {-3*z .5} pigment{Red} } sphere {<0,0,0>, .75 pigment{Gray} } object{pe(ang_pe) translate -3*z} rotate ang_ap*x } #end #macro perna(ang_pn, ang_ap, ang_pe) // perna, anteperna, pe merge { difference { cone{ <0,0,0>, .75, -4*z, .5 } sphere {<0,0,0>, 1} sphere {-4*z .75} pigment{Red} } sphere {<0,0,0>, 1 pigment{Gray} } object{anteperna(ang_ap, ang_pe) translate -4*z} rotate ang_pn*x } #end #macro robo(pnd, apd, ped, pne, ape, pee) // perna, anteperna, pe (d = direito, e = esquerdo) object { merge { box{<-2,-2,-1>, <2,2,1> pigment{Blue}} object{perna(pnd, apd, ped) translate <-2,-1,0>} object{perna(pne, ape, pee) translate <2,-1,0>} scale 1/7*(x+y+z) rotate -90*z } translate z } #end #declare cenario = merge { box{<-2,-4,0>,<2,-2,2>} box{<-2,2,0>,<2,4,2>} pigment{Red} } #macro clockRelativo(fase, numeroFases) #declare cr = numeroFases*clock - (fase-1); #end #macro pulo(objeto, posicao, deslocamento, tt) #if(tt <= .25) #declare PERNA = -45+45*sin(tt*4*pi/2); #declare ANTE = 45-45*sin(tt*4*pi/2); #declare PE = 90-90*sin(tt*4*pi/2); #end #if(tt > .25 & tt <= .5) #declare tt2 = tt-.25; #declare PERNA = 0; #declare ANTE = 0; #declare PE = 0+45*sin(tt2*4*pi/2); #end #if(tt > .5 & tt <= .75) #declare tt2 = tt-.5; #declare PERNA = 0; #declare ANTE = 0; #declare PE = 45+45*sin(tt2*4*pi/2); #end #if(tt > .75 & tt <= 1) #declare tt2 = tt-.75; #declare PERNA = -45*sin(tt2*4*pi/2); #declare ANTE = 45*sin(tt2*4*pi/2); #declare PE = 90; #end object{robo(PERNA,ANTE,PE, PERNA,ANTE,PE) translate 2*sin(2*pi*clock - pi/2)*z} #end #macro armacao1(tt) #declare PERNA = -27-28*tt; #declare ANTE = 27+28*tt; #declare PE = 45+45*tt; object{robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate 90*tt*z} #end #macro salto1(tt) #declare altura = 2*tt + sin(pi*tt); #if(tt < (1/3)) #declare tt2 = tt*3; #declare PERNA = -45 + 45*tt2; #declare ANTE = 45 - 45*tt2; #declare PE = 90 - 90*sin(tt2*4*pi/2); #end #if(tt >= (1/3) & tt < (2/3)) #declare tt2 = tt*3 - 1; #declare PERNA = 0; #declare ANTE = 0; #declare PE = 0 + 45*tt2; #end #if(tt > .75 & tt <= 1) #declare tt2 = tt*3 -2; #declare PERNA = -27*tt2; #declare ANTE = 27*tt2; #declare PE = 45 + 45*tt2; #end object{ object{ robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate 90*z } translate 3*tt*y + altura*z } #end #macro armacao2(tt) #declare PERNA = -27-28*tt; #declare ANTE = 27+28*tt; #declare PE = 45+45*tt; object { object{robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate (90+180*tt)*z} translate <0,3,2> } #end #macro salto2(tt) #declare altura = 2 + sin(pi*tt); #if(tt < (1/3)) #declare tt2 = tt*3; #declare PERNA = -45 + 45*tt2; #declare ANTE = 45 - 45*tt2; #declare PE = 90 - 90*sin(tt2*4*pi/2); #end #if(tt >= (1/3) & tt < (2/3)) #declare tt2 = tt*3 - 1; #declare PERNA = 0; #declare ANTE = 0; #declare PE = 0 + 45*tt2; #end #if(tt > .75 & tt <= 1) #declare tt2 = tt*3 -2; #declare PERNA = -27*tt2; #declare ANTE = 27*tt2; #declare PE = 45 + 45*tt2; #end object{ object{ robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate -90*z } translate (3-6*tt)*y + altura*z } #end #macro armacao3(tt) #declare PERNA = -27-28*tt; #declare ANTE = 27+28*tt; #declare PE = 45+45*tt; object { object{robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate (-90+180*tt)*z} translate <0,-3,2> } #end #macro salto3(tt) #declare altura = 2-2*tt + sin(pi*tt); #if(tt < (1/3)) #declare tt2 = tt*3; #declare PERNA = -45 + 45*tt2; #declare ANTE = 45 - 45*tt2; #declare PE = 90 - 90*sin(tt2*4*pi/2); #end #if(tt >= (1/3) & tt < (2/3)) #declare tt2 = tt*3 - 1; #declare PERNA = 0; #declare ANTE = 0; #declare PE = 0 + 45*tt2; #end #if(tt >= (2/3) & tt <= 1) #declare tt2 = tt*3 -2; #declare PERNA = -27*tt2; #declare ANTE = 27*tt2; #declare PE = 45 + 45*tt2; #end object{ object{ robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate 90*z } translate (-3+3*tt)*y + altura*z } #end #macro gira(tt) #declare PERNA = -27; #declare ANTE = 27; #declare PE = 45; object{robo(PERNA,ANTE,PE, PERNA,ANTE,PE) rotate (90+270*tt)*z} #end #declare NUMERO_FASES = 7; merge { object{cenario} #declare andamento = clock*NUMERO_FASES; #if (andamento < 1) clockRelativo(1, NUMERO_FASES) object{armacao1(cr)} #end #if (andamento >= 1 & andamento < 2) clockRelativo(2, NUMERO_FASES) object{salto1(cr)} #end #if (andamento >= 2 & andamento < 3) clockRelativo(3, NUMERO_FASES) object{armacao2(cr)} #end #if (andamento >= 3 & andamento < 4) clockRelativo(4, NUMERO_FASES) object{salto2(cr)} #end #if (andamento >= 4 & andamento < 5) clockRelativo(5, NUMERO_FASES) object{armacao3(cr)} #end #if (andamento >= 5 & andamento < 6) clockRelativo(6, NUMERO_FASES) object{salto3(cr)} #end #if (andamento >= 6) clockRelativo(7, NUMERO_FASES) object{gira(cr)} #end } #end quadro(clock) // Original camera parameters: // #local cam_ctr = <0,0,0> // #local cam_loc = <16.00,0.00,6.00> // #local cam_vec = <16.00,0.00,6.00> // #local cam_sky = z #include "camlight.inc" camlight(<0,0,0>,9.398,<10,10,10>,17.088,z,1.2)