// Last edited on 2007-07-23 23:30:58 by stolfi // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare raio = 2.000; #declare branco = texture { pigment { color rgb < 3.00, 3.00, 3.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare preto = texture { pigment { color rgb < 0.00, 0.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare vermelho = texture { pigment { color rgb < 2.00, 0.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare verde = texture { pigment { color rgb < 0.00, 2.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare azul = texture { pigment { color rgb < 0.00, 0.00, 2.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare dourado = texture { pigment { color rgb < 1.00, 0.80, 0.00 > } finish { ambient 0.3 diffuse 0.2 specular 0.3 roughness 0.005 reflection 0.2 } } #declare prata = texture { pigment { color rgb < 0.70, 0.70, 0.70 > } finish { ambient 0.3 diffuse 0.2 specular 0.3 roughness 0.005 reflection 0.2 } } #declare vermelho_rubi = texture { pigment { color rgb < 1.00, 0.00, 0.00 > filter 1.0 } finish { ambient 0.3 diffuse 0.2 specular 0.3 roughness 0.005 reflection 0.2 } } #declare verde_esmeralda = texture { pigment { color rgb < 0.00, 0.90, 0.00 > filter 1.0 } finish { ambient 0.3 diffuse 0.2 specular 0.3 roughness 0.005 reflection 0.2 } } #declare quadriculado = texture { pigment { checker color rgb < 1.00, 0.20, 0.00 > color rgb < 0.00, 0.00, 0.90 > } } #declare eixoX = cylinder { < 0.00, 0.00, 0.00 >, < 10.00, 0.00, 0.00 >, 0.05 texture { vermelho } } #declare eixoY = cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 10.00, 0.00 >, 0.05 texture { verde } } #declare eixoZ = cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, 10.00 >, 0.05 texture { azul } } #declare eixos_cartesianos = union { object {eixoX } object {eixoY } object {eixoZ } } #declare fundo = plane { z,0 translate -5*z texture { quadriculado } } #declare bola = sphere { < 0.00, 0.00, 0.00 >, 0.50 texture { prata } } #declare cilindro = cylinder { < 0.00, 0.00, 0.50 >, < 0.00, 0.00, -0.50 >, 1.00 texture { prata } } #declare tronco_cabeca = union { object{ bola scale <1.2,1.2,1.2> translate <0,0,8.55 > } object{ cilindro scale <1,1,4> translate <0,0,6> } } #declare espada = cone { <0.4, 0.0, 0.0>, 0.15 <0.4, 0.0, 2.5>, 0.0 texture {dourado} } #declare cilindro_braco = object { cilindro scale <0.3,0.3,1.5> rotate 90*y translate 0.75*x } #declare cilindro_perna = object { cilindro scale <0.4,0.4,2.0> translate -1.00*z } #declare mao = object { bola scale <0.8,0.8,0.4> translate 0.4*x } #macro Antebraco_dir(ang_mao) union { object {cilindro_braco} object {bola scale <0.6,0.6,0.6> translate 1.5*x } object {mao rotate ang_mao*y translate 1.5*x } object {espada rotate ang_mao*y translate 1.5*x } } #end #macro Braco_dir(ang_ant,ang_mao) union { object {cilindro_braco} object {bola scale <0.6,0.6,0.6> translate 1.5*x } object {Antebraco_dir(ang_mao) rotate ang_ant*y translate 1.5*x } } #end #macro Antebraco_esq(ang_mao) union { object {cilindro_braco} object {bola scale <0.6,0.6,0.6> translate 1.5*x } object {mao rotate ang_mao*y translate 1.5*x } } #end #macro Braco_esq(ang_ant,ang_mao) union { object {cilindro_braco} object {bola scale <0.6,0.6,0.6> translate 1.5*x } object {Antebraco_esq(ang_mao) rotate ang_ant*y translate 1.5*x } } #end #declare peh = object { bola scale <0.9,0.9,0.45> translate 0.45*y } #macro Canela(ang_peh) union { object {cilindro_perna} object {bola scale <0.8,0.8,0.8> translate -2.0*z } object {peh rotate ang_peh*x translate -2.0*z } } #end #macro Perna(ang_can,ang_peh) union { object {cilindro_perna} object {bola scale <0.8,0.8,0.8> translate -2.0*z } object {Canela(ang_peh) rotate ang_can*x translate -2.0*z } } #end #macro Boneco( ang1_braco_dir,ang2_braco_dir,ang_ant_dir,ang_mao_dir, ang1_braco_esq,ang2_braco_esq,ang_ant_esq,ang_mao_esq, ang1_perna_dir,ang2_perna_dir,ang_can_dir,ang_peh_dir, ang1_perna_esq,ang2_perna_esq,ang_can_esq,ang_peh_esq ) union { object {tronco_cabeca} object {bola scale <0.6,0.6,0.6> translate <1,0,7.7> scale <-1,0,0> } object {Braco_dir(ang_ant_dir,ang_mao_dir) rotate ang1_braco_dir*y rotate ang2_braco_dir*z translate <1,0,7.7> scale <-1,0,0> } object {bola scale <0.8,0.8,0.8> translate <0.6,0,4> scale <-1,0,0> } object {Perna(ang_can_dir,ang_peh_dir) rotate ang1_perna_dir*x rotate ang2_perna_dir*y translate <0.6,0,4> scale <-1,0,0> } object {bola scale <0.6,0.6,0.6> translate <1,0,7.7> } object {Braco_esq(ang_ant_esq,ang_mao_esq) rotate ang1_braco_esq*y rotate ang2_braco_esq*z translate <1,0,7.7> } object {bola scale <0.8,0.8,0.8> translate <0.6,0,4> } object {Perna(ang_can_esq,ang_peh_esq) rotate ang1_perna_esq*x rotate ang2_perna_esq*y translate <0.6,0,4> } } #end #macro interpola(T1, V1, T2, V2) ( (V1)+(clock-(T1)) *((V2)-(V1))/((T2)-(T1))) #end #declare ang1_braco_dir = -60+105*clock; #declare ang_ant_dir = -90+45*clock; #declare ang1_braco_esq = 105*clock; #declare ang_ant_esq = -60+30*clock; #declare ang_peh_dir = 20*sin(2*pi*clock+pi/2); #declare ang_peh_esq = -20*sin(2*pi*clock+pi/2); #if (clock >= 0.25 & clock <= 0.75) #declare ang1_perna_dir = -30*sin(2*pi*clock+pi/2); #else #declare ang1_perna_dir = -15*sin(2*pi*clock+pi/2); #end #if (clock >= 0.25 & clock <= 0.75) #declare ang1_perna_esq = 15*sin(2*pi*clock+pi/2); #else #declare ang1_perna_esq = 30*sin(2*pi*clock+pi/2); #end #if (clock < 0.5) #declare ang_can_dir = 20*sin(4*pi*clock+pi/2) - 35; #else #declare ang_can_dir = -15; #end #if (clock < 0.5) #declare ang_can_esq = -15; #else #declare ang_can_esq = 20*sin(4*pi*clock+pi/2) - 35; #end #declare perna_dir_z = - ( 2*cos(radians(ang1_perna_dir)) + 2*cos(radians(ang1_perna_dir+ang_can_dir)) ); #declare perna_dir_y = ( 2*sin(radians(ang1_perna_dir)) + 2*sin(radians(ang1_perna_dir+ang_can_dir)) ); #declare perna_esq_z = - ( 2*cos(radians(ang1_perna_esq)) + 2*cos(radians(ang1_perna_esq+ang_can_esq)) ); #declare perna_esq_y = ( 2*sin(radians(ang1_perna_esq)) + 2*sin(radians(ang1_perna_esq+ang_can_esq)) ); #declare translacao_z = -perna_dir_z; #declare translacao_y = -perna_dir_y; // object {fundo} object {Boneco( 30, 60, -45, 80, 45, 60, -30, 0, ang1_perna_dir, 0, ang_can_dir, ang_peh_dir, ang1_perna_esq, 0, ang_can_esq, ang_peh_esq ) translate <0, translacao_y, translacao_z> } // Original camera parameters: // #local cam_ctr = <0.00,0.00,8.00> // #local cam_vec = (<16.00,2.00,7.00>-<0.00,0.00,8.00>) // #local cam_sky = z #include "camlight.inc" // camlight(<0.00,0.00,8.00>,<10,10,10>,20.0,z,1.0) camlight(<0.00,0.00,6.00>,<5,10,5>,18.0,z,1.0)