// CORES E TEXTURAS #include "eixos.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare random = seed (1153); #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 < 0, 0.80, 0> } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_verde = texture{ pigment{ color rgb < 0, 0.80, 0> } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_azul = texture{ pigment{ color rgb < 0, 0, 1> } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_laranja = texture{ pigment{ color rgb < 0.9, 0.5, 0.2> } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_marrom = texture{ pigment{ color rgb < 0.6, 0.3, 0> } 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 roleta = seed(1); #declare chao = box{ <-20,-20,-2>, <+20,+20,-3> texture{tx_xadrez}} #declare cilindro_corpo = cylinder{ < 0.00, 0.00, 0.00>, < 0.00, 0.00, 8.00>, 1.5 texture{ tx_azul } } #declare cilindro_braco = cylinder{ <0.00, 0.00, 0.00>, <3.5, 0.00, 0.00>, 0.5 texture {tx_laranja} } #declare articulacao = sphere{ <0,0,0> 0.5 texture {tx_azul} } #declare cilindro_ante_braco = cylinder{ <0.00, 0.00, 0.00>, <3, 0.00, 0.00>, 0.5 texture {tx_laranja} } #declare esfera_mao = sphere{ <0,0,0> 0.75 texture {tx_azul} } #declare cone_garra = cone{ <0,0,0>, 0.3 <1.5,0,0>, 0 texture {tx_laranja} } #declare cilindro_perna = cylinder{ <0,0,0>, <0,0,-3.5>, 0.5 texture {tx_laranja} } #declare cilindro_pe = cylinder{ <0,0,0>, <0,0,-2>, 0.3 texture {tx_azul} } #declare cilindro_pescoco = cylinder{ <0,0,0>, <0,0,1>, 0.3 texture {tx_laranja} } #declare esfera_cabeca = sphere{ <0,0,0>, 1 texture {tx_laranja} } #declare cone_nariz = cone{ <0,0,0>, 0.2, <0,0.5,0>, 0 texture {tx_azul} } #macro antebraco(rotMao, rotGarra) union{ object {articulacao} object {cilindro_ante_braco translate <0.5,0,0>} object {mao(rotGarra) rotate rotMao translate <4,0,0>} } #end #macro braco(rotAntebraco, rotMao, rotGarra) union { object {cilindro_braco} object {antebraco(rotMao, rotGarra) rotate rotAntebraco translate <4,0,0>} } #end #macro mao(rotGarra) union{ object {articulacao} object {esfera_mao translate <1,0,0>} object {cone_garra translate <1.5,0,0>} object {cone_garra rotate<0,-rotGarra,0> translate <1.5,0,0.25>} } #end #macro perna(rotPe) union{ object {articulacao} object {cilindro_perna translate <0,0,-0.5>} object {pe() rotate translate<0,0,-4.5>} } #end #macro pe() union{ object {articulacao} object {cilindro_pe translate <0,0,-0.5>} } #end #macro cabeca() union{ object{cilindro_pescoco} object{esfera_cabeca translate<0,0,2>} object{cone_nariz translate<0,1,2>} } #end #macro robo(rotAntebracoD, rotAntebracoE, rotMaoD, rotMaoE, rotGarraD, rotGarraE, rotPernaD, rotPernaE, rotPeD, rotPeE, rotCabeca) union{ object{cilindro_corpo} object{braco(rotAntebracoD, rotMaoD, rotGarraD) translate<1.5,0,5>} object{braco(rotAntebracoE, rotMaoE, rotGarraE) rotate <0,180,0> translate<-1.5,0,5>} object{perna(rotPeD) rotate rotPernaD translate<0.75,0, -0.25>} object{perna(rotPeE) rotate rotPernaE translate<-0.75,0, -0.25>} object{cabeca() rotate <0,0,rotCabeca> translate<0,0,8>} } #end #macro quadro_inter1(tt) #local PA = array[18]; #local PA[0] = 0; #local PA[1] = -90; #local PA[2] = 0; #local PA[3] = 0; #local PA[4] = 60; #local PA[5] = 0; #local PA[6] = 0; #local PA[7] = 0; #local PA[8] = 0; #local PA[9] = 60; #local PA[10] = 0; #local PA[11] = 0; #local PA[12] = 60; #local PA[13] = 0; #local PA[14] = 0; #local PA[15] = -60; #local PA[16] = 0; #local PA[17] = 0; #local PB = array[18]; #local PB[0] = 0; #local PB[1] = -45; #local PB[2] = 0; #local PB[3] = 0; #local PB[4] = 45; #local PB[5] = 0; #local PB[6] = 0; #local PB[7] = 0; #local PB[8] = 60; #local PB[9] = 0; #local PB[10] = 0; #local PB[11] = 0; #local PB[12] = -50; #local PB[13] = 0; #local PB[14] = 60; #local PB[15] = 0; #local PB[16] = -40; #local PB[17] = 0; #local PC = array[18]; #local PC[0] = 50; #local PC[1] = 0; #local PC[2] = 0; #local PC[3] = 0; #local PC[4] = -20; #local PC[5] = 0; #local PC[6] = 0; #local PC[7] = 0; #local PC[8] = 60; #local PC[9] = 0; #local PC[10] = 0; #local PC[11] = 0; #local PC[12] = -60; #local PC[13] = 0; #local PC[14] = 0; #local PC[15] = 60; #local PC[16] = 0; #local PC[17] = 0; #local PD = array[18]; #local PD[0] = 0; #local PD[1] = -45; #local PD[2] = 0; #local PD[3] = 0; #local PD[4] = 45; #local PD[5] = 0; #local PD[6] = 0; #local PD[7] = 60; #local PD[8] = 0; #local PD[9] = 40; #local PD[10] = 0; #local PD[11] = -80; #local PD[12] = 0; #local PD[13] = 0; #local PD[14] = 30; #local PD[15] = 0; #local PD[16] = 0; #local PD[17] = 0; #local PF = PA #local N = 18; #local T0 = 0.00; #local T1 = 0.25; #local T2 = 0.50; #local T3 = 0.80; #local T4 = 1.00; #if(tt >= T0 & tt <= T1) #local qd = param_interpola1(tt, T0, T1, PA, PB); #elseif(tt > T1 & tt <= T2) #local qd = param_interpola1(tt, T1, T2, PB, PC); #elseif(tt > T2 & tt <= T3) #local qd = param_interpola1(tt, T2, T3, PC, PD); #elseif(tt > T3 & tt <= T4) #local qd = param_interpola1(tt, T3, T4, PD, PF); #end robo_vet(qd) #end #macro quadro_inter3(tf) #local PA = array[18]; #local PA[0] = 0; #local PA[1] = -90; #local PA[2] = 0; #local PA[3] = 0; #local PA[4] = 60; #local PA[5] = 0; #local PA[6] = 0; #local PA[7] = 0; #local PA[8] = 0; #local PA[9] = 0; #local PA[10] = 0; #local PA[11] = 0; #local PA[12] = 60; #local PA[13] = 0; #local PA[14] = 0; #local PA[15] = -60; #local PA[16] = 0; #local PA[17] = 0; #local PB = array[18]; #local PB[0] = 0; #local PB[1] = -45; #local PB[2] = 0; #local PB[3] = 0; #local PB[4] = 45; #local PB[5] = 0; #local PB[6] = 0; #local PB[7] = 0; #local PB[8] = 50; #local PB[9] = 0; #local PB[10] = 0; #local PB[11] = 0; #local PB[12] = 0; #local PB[13] = 50; #local PB[14] = 0; #local PB[15] = 0; #local PB[16] = 0; #local PB[17] = 0; #local PC = array[18]; #local PC[0] = 0; #local PC[1] = 0; #local PC[2] = 0; #local PC[3] = -20; #local PC[4] = 0; #local PC[5] = 0; #local PC[6] = -30; #local PC[7] = 0; #local PC[8] = -30; #local PC[9] = 0; #local PC[10] = 0; #local PC[11] = 0; #local PC[12] = -60; #local PC[13] = 0; #local PC[14] = 0; #local PC[15] = 60; #local PC[16] = 0; #local PC[17] = 50; #local PD = array[18]; #local PD[0] = 0; #local PD[1] = -45; #local PD[2] = 0; #local PD[3] = 0; #local PD[4] = 45; #local PD[5] = 0; #local PD[6] = 0; #local PD[7] = 0; #local PD[8] = 0; #local PD[9] = 0; #local PD[10] = 60; #local PD[11] = 0; #local PD[12] = 60; #local PD[13] = 0; #local PD[14] = 0; #local PD[15] = 0; #local PD[16] = 0; #local PD[17] = 0; #local PE = PA #local PAa = PA #local PAz = PB #local PBa = PB #local PBz = PC #local PCa = PC #local PCz = PD #local PDa = PD #local PDz = PE #local PEa = PAa #local PEz = PAz #local T0 = 0.00; #local T1 = 0.25; #local T2 = 0.50; #local T3 = 0.80; #local T4 = 1.00; #local PAm = param_interpola1(T0, T0-(T4-T3)/3, T0+(T1-T0)/3, PAa, PAz); #local PBm = param_interpola1(T1, T1-(T1-T0)/3, T1+(T2-T1)/3, PBa, PBz); #local PCm = param_interpola1(T2, T2-(T2-T1)/3, T2+(T3-T2)/3, PCa, PCz); #local PDm = param_interpola1(T3, T3-(T3-T2)/3, T3+(T4-T3)/3, PDa, PDz); #local PEm = param_interpola1(T4, T4-(T4-T3)/3, T4+(T1-T0)/3, PEa, PEz); #if ((T0 <= tf) & (tf <= T1)) #local P = param_interpola3(tf, T0,T1, PAm,PAz,PBa,PBm); #elseif ((T1 <= tf) & (tf <= T2)) #local P = param_interpola3(tf, T1,T2, PBm,PBz,PCa,PCm); #elseif ((T2 <= tf) & (tf <= T3)) #local P = param_interpola3(tf, T2,T3, PCm,PCz,PDa,PDm); #elseif ((T3 <= tf) & (tf <= T4)) #local P = param_interpola3(tf, T3,T4, PDm,PDz,PEa,PEm); #end robo_vet(P) #end #macro param_interpola1(tt, tt0, tt1, P1, P2) #local N = 18; #local PT = array[18]; #local ii = 0; #while(ii < N) #local PT[ii] = interpola1(tt, tt0, tt1, P1[ii], P2[ii]); #local ii = ii + 1; #end PT #end #macro param_interpola3(tt, tt0, tt1, P1a, P1z, P2a, P2b) #local N = 18; #local PT = array[18]; #local ii = 0; #while(ii < N) #local PT[ii] = interpola3(tt, tt0, tt1, P1a[ii], P1z[ii], P2a[ii], P2b[ii]); #local ii = ii + 1; #end PT #end #macro robo_vet(PA) union{ object{robo(, , , , 0, 0, , , 0, 0, 0)} } #end #macro interpola1(tt, tt0,tt1, vv0,vv1) #local rr = (tt - tt0)/(tt1 - tt0); #local vv = (1-rr)*vv0 + rr*vv1; vv #end #macro interpola3(tt, tt0,tt3, vv0,vv1,vv2,vv3) #local vv01 = interpola1(tt, tt0,tt3, vv0,vv1); #local vv12 = interpola1(tt, tt0,tt3, vv1,vv2); #local vv23 = interpola1(tt, tt0,tt3, vv2,vv3); #local vv012 = interpola1(tt, tt0,tt3, vv01,vv12); #local vv123 = interpola1(tt, tt0,tt3, vv12,vv23); #local vv0123 = interpola1(tt, tt0,tt3, vv012,vv123); vv0123 #end object{quadro_inter3(clock)} object{quadro_inter1(clock) translate<20,0,0>} /*object{robo(<0,-90,0>, <0,90,0>, <0,0,0>, <0,0,0>, 0, 0, <60,0,0>, <-60,0,0>, 0 , 0, 0) translate<0, 0, 0>} object{robo(<0,-45,0>, <0,45,0>, <0,0,0>, <0,0,0>, 0, 0, <0,0,0>, <0,0,0>, 0 , 0, 0) translate<20, 0, 0>} object{robo(<0,0,0>, <0,0,0>, <0,0,0>, <0,0,0>, 0, 0, <-60,0,0>, <60,0,0>, 0 , 0, 0) translate<40, 0, 0>} object{robo(<0,-45,0>, <0,45,0>, <0,0,0>, <0,0,0>, 0, 0, <0,0,0>, <0,0,0>, 0 , 0, 0) translate<60, 0, 0>} */ #include "camlight.inc" #declare centro_cena = <10, 0, 5>; #declare raio_cena = 28.0; #declare dir_camera = <2, 4, 1>; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)