/* tp06 Filipe Ramos de Castro RA032849 */ #include "eixos.inc" #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz) background{ color rgb < 1, 1, 1 > } #macro pe() cylinder{ <0, 0, 0>, <0, 0.7, 0>, 0.1 texture{ pigment{ color rgb <1, 0, 1> } finish{ ambient 0.3 } } } #end #macro anteperna(teta) union{ cylinder{ <0, 0, 0>, <0, 0, -0.7>, 0.1 texture{ pigment{ color rgb <0, 0, 1> } finish{ ambient 0.3 } } } object{ pe() rotate teta*x translate -0.6*z } } #end #macro perna(teta, beta) union{ cylinder{ <0, 0, 0.1>, <0, 0, -0.7>, 0.1 texture{ pigment{ color rgb <0, 1, 0> } finish{ ambient 0.3 } } } object{ anteperna(teta) rotate beta*x translate -0.6*z } } #end #macro saltopede(h, teta, beta, alfa) union{ sphere{ <0, 0, 0>, 1 texture{ pigment{ color rgb <1, 0, 0> } finish{ ambient 0.3 } } } object{ perna(teta, beta) rotate alfa*x translate -1*z } translate h*z translate (h/2+clock)*y } #end #macro interpola(ta, va, tb, vb, tt) #local s = (tt - ta) / (tb - ta); ((1 - s)*va+s*vb) #end #declare t0 = 0.000; #declare t1 = 0.250; #declare t2 = 0.500; #declare t3 = 0.750; #declare t4 = 1.000; #declare teta0 = 30; #declare teta1 = 55; #declare teta2 = 25; #declare teta3 = 10; #declare teta4 = 30; #declare beta0 = -40; #declare beta1 = -60; #declare beta2 = -10; #declare beta3 = 0; #declare beta4 = -40; #declare alfa0 = 15; #declare alfa1 = 35; #declare alfa2 = 8; #declare alfa3 = 0; #declare alfa4 = 15; #declare altura0 = 0; #declare altura1 = -1; #declare altura2 = 1; #declare altura3 = 2; #declare altura4 = 0; #if((clock >= t0) & (clock <= t1)) #declare teta = interpola(t0, teta0, t1, teta1, clock); #declare beta = interpola(t0, beta0, t1, beta1, clock); #declare alfa = interpola(t0, alfa0, t1, alfa1, clock); #declare altura = interpola(t0, altura0, t1, altura1, clock); #end #if((clock >= t1) & (clock <= t2)) #declare teta = interpola(t1, teta1, t2, teta2, clock); #declare beta = interpola(t1, beta1, t2, beta2, clock); #declare alfa = interpola(t1, alfa1, t2, alfa2, clock); #declare altura = interpola(t1, altura1, t2, altura2, clock); #end #if((clock >= t2) & (clock <= t3)) #declare teta = interpola(t2, teta2, t3, teta3, clock); #declare beta = interpola(t2, beta2, t3, beta3, clock); #declare alfa = interpola(t2, alfa2, t3, alfa3, clock); #declare altura = interpola(t2, altura2, t3, altura3, clock); #end #if((clock >= t3) & (clock <= t4)) #declare teta = interpola(t3, teta3, t4, teta4, clock); #declare beta = interpola(t3, beta3, t4, beta4, clock); #declare alfa = interpola(t3, alfa3, t4, alfa4, clock); #declare altura = interpola(t3, altura3, t4, altura4, clock); #end union{ object{ eixos(5.00) } object{ saltopede(altura, alfa, beta, teta) } rotate 25*z rotate -15*y rotate 7*x scale 2 }