// Diego Alves Nascimento RA 042954 // TP06 - MO603B // Last edited on 2010-09-16 #include "textures.inc" // declaração do "chassi": #declare corpo= union{ sphere{<0, 0, 0> 0.5 texture{Aluminum} translate z*2} cylinder{<0, 0, 0> <0, 0, 1.5> 0.5 texture{Aluminum}} } #macro pe() box{<0, 0, 0> < 0.1, 0.1, -0.3> texture{Aluminum} } // Coloca o pé na origem #end #macro canela(gama) union{ box{<0, 0, 0> < 0.1, 0.1, -0.5> texture{Aluminum}} // cria a canela object{pe() rotate x*gama translate z*(-0.5)} // coloca o pé rodado no final da canela } #end #macro coxa(beta, gama) union{ box{<0, 0, 0> < 0.1, 0.1, -1> texture{Aluminum}} // cria a coxa object{canela(gama) rotate x*beta translate z*(-1)} // coloca a canela no fim da coxa rodada de beta } #end #macro saci(alfa, beta, gama) union{ object{coxa(beta, gama) rotate alfa*x} // coloca a perna no fim do corpo rodada de alfa object{corpo} //cria o corpo } #end #macro interpol(ta, va, tb, vb, tt) #local s = (tt-ta)/(tb-ta); ( (1-s)*va + s*vb ) #end #macro quadro(tt) // Gera o quadro do filme (cena, luzes e câmera) // para o instante {tt} -- um número real entre 0 e 1. // ====================================================================== // CÂMERA background{ color rgb < 0.75, 0.80, 0.85 > } #include "eixos.inc" #include "textures.inc" //object{ eixos(3.00) } #declare t0 = 0; #declare t1 = 0.25; #declare t2 = 0.5; #declare t3 = 0.75; #declare t4 = 1; #declare alfa0 = -45; #declare alfa1 = -70; #declare alfa2 = 0; #declare alfa3 = 30; #declare alfa4 = 10; #declare beta0 = 45; #declare beta1 = 120; #declare beta2 = 0; #declare beta3 = -60; #declare beta4 = -30; #declare gama0 = 45; #declare gama1 = 10; #declare gama2 = 0; #declare gama3 = 30; #declare gama4 = 10; #declare ty0 = 0; #declare ty1 = 0; #declare ty2 = 1; #declare ty3 = 2; #declare ty4 = 4; #declare tz0 = 0; #declare tz1 = -1; #declare tz2 = 0.8; #declare tz3 = 1; #declare tz4 = 0; #if( (clock >= t0) & (clock < t1) ) #declare alfa = interpol(t0, alfa0, t1, alfa1, clock); #declare beta = interpol(t0, beta0, t1, beta1, clock); #declare gama = interpol(t0, gama0, t1, gama1, clock); #declare ty = interpol(t0, ty0, t1, ty1, clock); #declare tz = interpol(t0, tz0, t1, tz1, clock); #end #if( (clock >= t1) & (clock < t2) ) #declare alfa = interpol(t1, alfa1, t2, alfa2, clock); #declare beta = interpol(t1, beta1, t2, beta2, clock); #declare gama = interpol(t1, gama1, t2, gama2, clock); #declare ty = interpol(t1, ty1, t2, ty2, clock); #declare tz = interpol(t1, tz1, t2, tz2, clock); #end #if( (clock >= t2) & (clock < t3) ) #declare alfa = interpol(t2, alfa2, t3, alfa3, clock); #declare beta = interpol(t2, beta2, t3, beta3, clock); #declare gama = interpol(t2, gama2, t3, gama3, clock); #declare ty = interpol(t2, ty2, t3, ty3, clock); #declare tz = interpol(t2, tz2, t3, tz3, clock); #end #if( (clock >= t3) & (clock <= t4) ) #declare alfa = interpol(t3, alfa3, t4, alfa4, clock); #declare beta = interpol(t3, beta3, t4, beta4, clock); #declare gama = interpol(t3, gama3, t4, gama4, clock); #declare ty = interpol(t3, ty3, t4, ty4, clock); #declare tz = interpol(t3, tz3, t4, tz4, clock); #end object{ saci(alfa, beta, gama) translate<0, ty, tz>} #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 7.0; #declare dir_camera = < 20.00, 0.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) #end // gera o quadro correspondente ao instante dado {clock}: quadro(clock)