// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2021-12-11 13:51:21 by stolfi // ====================================================================== // CORES E TEXTURAS 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 < 0.54, 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 } } // ====================================================================== // Seed #declare roleta = seed(342); // ====================================================================== // DESCRI��O DA CENA #macro robo(ra_x,ra_y,ra_z,rfa_y,la_x,la_y,la_z,lfa_y,rt_x,rt_y,rt_z,rc_x,rf_x,lt_x,lt_y,lt_z,lc_x,lf_x) union { box{ <-3,-2,-5>, <+3,+2, 5> texture{tx_fosca}} object{ arm(rfa_y) rotate ra_z*x rotate ra_y * y rotate ra_x*x translate <3.5,0,3>} object{ arm(lfa_y) rotate la_z*x rotate la_y * y rotate la_x*x scale <-1,1,1> translate <-3.5,0, 3> } object{ thigh(rc_x,rf_x) rotate rt_z*x rotate rt_y * y rotate rt_x*x translate <-2,0,-5>} object{ thigh(lc_x,lf_x) rotate lt_z*x rotate lt_y * y rotate lt_x*x translate <2,0,-5>} } #end #macro arm(y_rotation) union { sphere{ <0,0,0>, 0.8 texture{tx_espelho}} cylinder{<0,0,0>, <6,0,0>,0.5 texture{ tx_plastico}} object{ forearm() rotate <0,y_rotation,0> translate <6,0,0>} } #end #macro forearm() union { sphere{ <0,0,0>, 0.8 texture{tx_espelho}} cylinder{<0,0,0>, <4,0,0>, 0.5 texture{ tx_plastico}} sphere{ <4,0,0>, 0.8 texture{tx_espelho}} } #end #macro thigh(calf_x_rotation,feet_x_rotation) union { sphere{ <0,0,0>, 0.8 texture{tx_espelho}} cylinder{<0,0,0>, <0,0,-6>, 0.5 texture{ tx_plastico}} object {calf(feet_x_rotation) rotate translate <0,0,-6>} } #end #macro calf(feet_x_rotation) union { sphere{ <0,0,0>, 0.8 texture{tx_espelho}} cylinder{<0,0,0>, <0,0,-5>, 0.5 texture{ tx_plastico}} object {feet() rotate translate <0,0,-5>} } #end #macro feet() union{ sphere{ <0,0,0>, 0.8 texture{tx_espelho}} box{ <-1,3,-1.5> , <1,-1,-0.5> texture{tx_plastico}} } #end #macro robo_interpola(tt, P0, P1) #local n = 18; #local qd = array[n] #local j = 0; #while (j < n) #local qd[j] = (1-tt)*P0[j] + tt*P1[j]; #local j = j+1; #end robo_vet(qd) #end #macro quadro(tf) #local T0 = 0.00; #local T1 = 0.25; #local T2 = 0.50; #local T3 = 0.75; #local T4 = 1.00; #local quadro1 = array[18] #local quadro1[0] = 0; #local quadro1[1] = 85; #local quadro1[2] = 90; #local quadro1[3] = 20; #local quadro1[4] = 0; #local quadro1[5] = 85; #local quadro1[6] = 90; #local quadro1[7] = 20; #local quadro1[8] = 0; #local quadro1[9] = 0; #local quadro1[10] = 0; #local quadro1[11] = 0; #local quadro1[12] = 0; #local quadro1[13] = 0; #local quadro1[14] = 0; #local quadro1[15] = 0; #local quadro1[16] = 0; #local quadro1[17] = 0; #local quadro2 = array[18] #local quadro2[0] = 20; #local quadro2[1] = 85; #local quadro2[2] = 90; #local quadro2[3] = 30; #local quadro2[4] = -20; #local quadro2[5] = 85; #local quadro2[6] = 90; #local quadro2[7] = 30; #local quadro2[8] = 45; #local quadro2[9] = 0; #local quadro2[10] = 0; #local quadro2[11] = -45; #local quadro2[12] = 10; #local quadro2[13] = 0; #local quadro2[14] = 0; #local quadro2[15] = 0; #local quadro2[16] = 0; #local quadro2[17] = 0; #local quadro3 = array[18] #local quadro3[0] = 45; #local quadro3[1] = 85; #local quadro3[2] = 90; #local quadro3[3] = 45; #local quadro3[4] = -45; #local quadro3[5] = 85; #local quadro3[6] = 90; #local quadro3[7] = 45; #local quadro3[8] = 45; #local quadro3[9] = 0; #local quadro3[10] = 0; #local quadro3[11] = -20; #local quadro3[12] = 20; #local quadro3[13] = -20; #local quadro3[14] = 0; #local quadro3[15] = 0; #local quadro3[16] = -45; #local quadro3[17] = 45; #local quadro4 = array[18] #local quadro4[0] = 0; #local quadro4[1] = 85; #local quadro4[2] = 90; #local quadro4[3] = 20; #local quadro4[4] = 0; #local quadro4[5] = 85; #local quadro4[6] = 90; #local quadro4[7] = 20; #local quadro4[8] = 0; #local quadro4[9] = 0; #local quadro4[10] = 0; #local quadro4[11] = 0; #local quadro4[12] = 0; #local quadro4[13] = 10; #local quadro4[14] = 0; #local quadro4[15] = 0; #local quadro4[16] = -45; #local quadro4[17] = 10; #if((T0 <= tf) & (tf <= T1)) #local tt = (tf - T0)/(T1 - T0); #local qd = robo_interpola(tt,quadro1, quadro2 ); #elseif ((T1 <= tf) & (tf <= T2)) #local tt = (tf - T1)/(T2 - T1); #local qd = robo_interpola(tt, quadro2, quadro3 ); #elseif ((T2 <= tf) & (tf <= T3)) #local tt = (tf - T2)/(T3 - T2); #local qd = robo_interpola(tt, quadro3, quadro4 ); #elseif ((T3 <= tf) & (tf <= T4)) #local tt = (tf - T3)/(T4 - T3); #local qd = robo_interpola(tt, quadro4, quadro1 ); #end qd #end #macro robo_vet(VET) object{robo(VET[0],VET[1],VET[2],VET[3],VET[4],VET[5],VET[6],VET[7],VET[8],VET[9],VET[10],VET[11],VET[12],VET[13],VET[14],VET[15],VET[16],VET[17])} #end object{quadro(clock)} #include "camlight.inc" #declare centro_cena = < 0, 0, -5 >; #declare raio_cena = 27; #declare dir_camera = < -5, 10, 5 >; #declare dist_camera = raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)