// Last edited on DATE TIME by USER // Processed by remove-cam-lights #include "textures.inc" #include "eixos.inc" #include "colors.inc" background{ color White } #declare chassi = box{<0,0,0>, <4, 7, 3>} #macro peh() union{ object{ box{<0,0,0>, <1, 1.5, 1>} translate<-0.5, -0.5, -0.5> } object{ cylinder{<0,0,0>, <1,0,0>, 0.5} translate<-0.5,1,0>} } #end #macro subperna(beta) union{ object{ cylinder{<0,0,0>, <0,0,4>, 0.5 } translate -3.5*z } object{ peh() rotate -beta*x translate -3*z } } #end #macro perna(alfa, beta) union{ object{ sphere{<0,0,0>, 0.5} translate 0.5*z } object{ cylinder {<0,0,0>, <0,0,3>, 0.5} translate -2.5*z } object{ subperna(beta) rotate -alfa*x translate -2*z } pigment {color Blue } } #end #macro carro(alfa, beta, gama, delta) union{ object{ box{<0,0,0>, <4,7,3>} pigment{color Red}} //corpo object{ perna(alfa, beta) rotate gama*x rotate -delta*z translate <4.5,5,1> } object{ perna(alfa, beta) rotate gama*x rotate (180+delta)*z translate <4.5,2,1> } object{ perna(alfa, beta) rotate gama*x rotate (delta)*z translate <-0.5,5,1> } object{ perna(alfa, beta) rotate gama*x rotate (180-delta)*z translate <-0.5,2,1> } } #end #macro saltador(a,b,c) object{ carro(a,b,c,25) translate -<2, 3.5, 1.5> } #end #macro interpole(ta, va, tb, vb, tt) #local s = (tt-ta)/(tb-ta); ((1-s)*va+s*vb) #end #declare a0 = 90; #declare b0 = 30; #declare c0 = 120; #declare p0 = 0; #declare a1 = 70; #declare b1 = 60; #declare c1 = 130; #declare p1 = -1; #macro armacao(fase) #local fase0 = 0.0; #local fase1 = 0.5; #local fase2 = 1.0; #if ((fase > fase0) & (fase <= fase1)) #local a = interpole(fase0, a0, fase1, a1, fase); #local b = interpole(fase0, b0, fase1, b1, fase); #local c = interpole(fase0, c0, fase1, c1, fase); #local p = interpole(fase0, p0, fase1, p1, fase); #end #if ((fase > fase1) & (fase <= fase2)) #local a = interpole(fase1, a1, fase2, a0, fase); #local b = interpole(fase1, b1, fase2, b0, fase); #local c = interpole(fase1, c1, fase2, c0, fase); #local p = interpole(fase1, p1, fase2, p0, fase); #end object{ saltador(a,b,c) translate p*z } #end #macro voo(h, fase) #local fase0 = 0.0; #local fase1 = 0.5; #local fase2 = 1.0; #local a = a0; #local b = b0; #local c = c0; #if ((fase > fase0) & (fase <= fase1)) #local p = interpole(fase0, p0, fase1, h, fase); #end #if ((fase > fase1) & (fase <= fase2)) #local p = interpole(fase1, h, fase2, p0, fase); #end object{ saltador(a,b,c) translate p*z } #end #macro pula(h, p, q, fase) #local r = interpole(0, p, 1, q, fase); //ponto pra onde vai transladar object{ voo(h, fase) translate r } #end #macro armacao_geral(r, fase) object{ armacao(fase) translate r } #end #macro quadro(tt) #local t0 = 0.0; #local t1 = 0.25; #local t2 = 0.5; #local t3 = 0.75; #local t4 = 1.0; #local A = <10, 10, 0>; #local B = <10, -10, 0>; #local C = <-10, -10, 0>; #local D = <-10, 10, 0>; #local h = 7; #if ((t0 < tt) & (tt <= t1)) #local fase = interpole(t0,0,t1,1,tt); object{ salto(h, A, B, fase) } #end #if ((t1 < tt) & (tt <= t2)) #local fase = interpole(t1,0,t2,1,tt); object{ salto(h, B, C, fase) } #end #if ((t2 < tt) & (tt <= t3)) #local fase = interpole(t2,0,t3,1,tt); object{ salto(h, C, D, fase) } #end #if ((t3 < tt) & (tt <= t4)) #local fase = interpole(t3,0,t4,1,tt); object{ salto(h, D, A, fase) } #end #end #macro salto(h,p,q,fase) #if (fase < 0.5) object{armacao_geral(p, 2*fase)} #else object{pula(h, p, q, 2*(fase-0.5))} #end #end union{ quadro(clock) cylinder{ <10, 10, -3>, <10,10,-20>,7 } cylinder{ <10, -10, -3>, <10,-10,-20>,7 } cylinder{ <-10, -10, -3>, <-10,-10,-20>,7 } cylinder{ <-10, 10, -3>, <-10,10,-20>,7 } } // Original camera parameters: // #local cam_ctr = <0,0,0> // #local cam_loc = <40,40,20> // #local cam_vec = <40,40,20> // #local cam_sky = z #include "camlight.inc" camlight(<0,0,0>,33.000,<10,10,10>,60.000,z,1.2)