// Last edited on 2019-07-17 11:06:47 by stolfilocal // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare raio = 2.000; #declare bolinha = sphere{ < 0,0,0 >, 0.60 } #declare bolota = sphere{ < 0,0,0 >, 1.50 } #declare bola = sphere{ < 0.00, 0.00, 0.00 >, raio texture{ tx_plastico } } #declare pino = cylinder{ < -2.00, +2.00, -1.00 >, < +2.00, -2.00, +1.00 >, 0.75 texture{ tx_fosca } } #declare furo = cylinder{ < -1.00, -2.00, -2.00 >, < +1.00, +2.00, +2.00 >, 0.75*raio texture{ tx_fosca } } #include "eixos.inc" #declare CC = 6.2832; // = 2pi #macro interpolalin(t0,v0,t1,v1,tt) #local r = (tt-t0)/(t1-t0); #local s = 1-r; #local vv= s*v0 + r*v1; vv #end #macro arcobezier(t0,t1,A,B,C,D,tt) #local AB = interpolalin(t0,A,t1,B,tt); #local BC = interpolalin(t0,B,t1,C,tt); #local CD = interpolalin(t0,C,t1,D,tt); #local ABC = interpolalin(t0,AB,t1,BC,tt); #local BCD = interpolalin(t0,BC,t1,CD,tt); #local ABCD = interpolalin(t0,ABC,t1,BCD,tt); ABCD #end #declare mosquito_corpo = box{<-20,-6,-6>,<20,6,6> texture{tx_plastico}} #declare mosquito_cabeca = cone{<13,0,0>,0,<0,0,0>,2 texture {tx_fosca}} #declare mosquito_pe = cylinder{<0,0,0>,<1.2,0,0>,0.8 texture{tx_fosca}} #declare mosquito_junta = sphere{<0,0,0>,1 texture{tx_fosca}} #declare mosquito_canela = cylinder{<0,0,0>,<5,0,0>,0.8 texture {tx_fosca}} #macro mosquito_perna1() union{ object{mosquito_pe translate <1,0,0>} object{mosquito_junta translate <0,0,0>} } #end #macro mosquito_perna2(a) union{ object{mosquito_junta translate <0,0,0>} object{mosquito_canela translate <1.5,0,0>} object{mosquito_perna1() rotate <0,-a,0> translate <7,0,0>} } #end #macro mosquito_perna3(a,b) union{ object{mosquito_junta translate <0,0,0>} object{mosquito_canela translate <1.5,0,0>} object{mosquito_perna2(a) rotate <0,b,0> translate <6,0,0>} } #end #macro dragao_mosquito(a,b,c) union{ object{mosquito_corpo translate <-10,0,0>} object{mosquito_cabeca translate <0,0,0>} object{mosquito_perna3(a,b) rotate <0,90-c,0> translate <-20,5,-6>} object{mosquito_perna3(a,b) rotate <0,90-c,0> translate < -10,5,-6>} object{mosquito_perna3(a,b) rotate <0,90-c,0> translate <0,5,-6>} object{mosquito_perna3(a,b) rotate <0,90-c,0> translate <-20,-5,-6>} object{mosquito_perna3(a,b) rotate <0,90-c,0> translate <-10,-5,-6>} object{mosquito_perna3(a,b) rotate <0,90-c,0> translate <0,-5,-6>} } #end #macro busca_tempo(clk,NQ,tK) union{ } #end #declare NQ = 7; #declare NP = 3; #declare NA = 2; #declare A = array[NP][NA] #declare A[0][0] = <80,30,20>; #declare A[0][1] = <80,30,20>; #declare A[1][0] = <80,30,20>; #declare A[1][1] = <80,30,20>; #declare A[2][0] = <80,30,20>; #declare A[2][1] = <80,30,20>; #declare Q = array[NQ][NP][NA] #declare Q[0][0][0] = <80,30,20>; #declare Q[0][0][1] = <80,30,20>; #declare Q[0][1][0] = <80,30,20>; #declare Q[0][1][1] = <80,60,20>; #declare Q[0][2][0] = <80,30,20>; #declare Q[0][2][1] = <80,30,20>; #declare Q[1][0][0] = <80,30,20>; #declare Q[1][0][1] = <60,60,10>; #declare Q[1][1][0] = <60,60,10>; #declare Q[1][1][1] = <60,60,10>; #declare Q[1][2][0] = <60,60,10>; #declare Q[1][2][1] = <60,10,10>; #declare Q[2][0][0] = <60,60,10>; #declare Q[2][0][1] = <80,30,20>; #declare Q[2][1][0] = <20,70,20>; #declare Q[2][1][1] = <20,20,20>; #declare Q[2][2][0] = <20,70,20>; #declare Q[2][2][1] = <20,70,20>; #declare Q[3][0][0] = <50,15,15>; #declare Q[3][0][1] = <50,15,15>; #declare Q[3][1][0] = <50,15,15>; #declare Q[3][1][1] = <50,15,15>; #declare Q[3][2][0] = <50,15,15>; #declare Q[3][2][1] = <50,15,15>; #declare Q[4][0][0] = <40,70,10>; #declare Q[4][0][1] = <40,70,10>; #declare Q[4][1][0] = <40,70,10>; #declare Q[4][1][1] = <10,70,10>; #declare Q[4][2][0] = <80,30,20>; #declare Q[4][2][1] = <80,30,20>; #declare Q[5][0][0] = <50,15,15>; #declare Q[5][0][1] = <50,15,15>; #declare Q[5][1][0] = <50,15,15>; #declare Q[5][1][1] = <50,15,15>; #declare Q[5][2][0] = <50,15,15>; #declare Q[5][2][1] = <50,15,15>; #declare Q[6][0][0] = <80,30,20>; #declare Q[6][0][1] = <80,30,20>; #declare Q[6][1][0] = <80,30,20>; #declare Q[6][1][1] = <80,30,20>; #declare Q[6][2][0] = <80,30,20>; #declare Q[6][2][1] = <80,30,20>; #macro dragao(A,m,n) union{ #local i = 0; #local j = 0; object{mosquito_corpo translate <-10,0,0>} object{mosquito_cabeca translate <10,0,0>} #while(i translate <-30+2*(i+1)*30/(m+2),5,-6>} object{mosquito_perna3(A[i][j].x,A[i][j].y) rotate <0,90-A[i][j].z,0> translate <-30+2*(i+1)*30/(m+2),-5,-6>} //!!!!! #declare i = i+1; #end } #end #macro interpolalin(t0,v0,t1,v1,tt) #local r = (tt-t0)/(t1-t0); #local s = 1-r; #local vv= s*v0 + r*v1; vv #end #macro interpola_quadros(NP,NA,Q,k0,t0,k1,t1,tt) #local A = array[NP][NA] #local i = 0; #while(iclk) #local i = i+1; #end i #end #declare tK = array[NQ] #declare tK[0] = 0; #declare tK[1] = 0.15; #declare tK[2] = 0.35; #declare tK[3] = 0.5; #declare tK[4] = 0.65; #declare tK[5] = 0.85; #declare tK[6] = 1; #macro quadro(clk) union{ #local k = busca_tempo(clk,NQ,tK); #local A = array[NP][NA] #local A = interpola_quadros(NP,NA,Q,k,tK[k],k+1,tK[k+1],clk) object{dragao(A,NP,NA)} } #end object{quadro(clock)} #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 40; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)