// Last edited on 2003-05-29 19:24:12 by stolfi #include "colors.inc" background{ color White } camera { location 0.12*<90,0,-60> right x up y look_at <0,-0.5,-2.5> } light_source { 100*<10, 20, -10> color 1.2*White } light_source { 100*<15, 9, 5> color 0.8*White } #declare tinta_A = texture { pigment { color rgb < 1.00, 0.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_B = texture { pigment { color rgb < 1.00, 0.80, 0.10 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare cabeca = sphere { < 0.00, 2.90, 0.00 >, 1.00 texture { tinta_B } } #declare olho = sphere { < +0.25, 3, -1.00 >, 0.1 texture { tinta_A } } #declare nariz = sphere { < 0, 2.5, -1.00 >, 0.3 texture { tinta_A } } #declare corpo = sphere { < 0.00, 0.00, 0.00 >, 1.30 scale < 0.00, 1.50, 0.00 > texture { tinta_B } } #declare braco = cylinder { < 0.0, 0.80, 0.00 > < -1.80, 0.30, 0.00 >, 0.25 translate <-0.5, 0, 0> texture { tinta_B } } #declare orelha = sphere { < 0, 2.9, 0 >, 0.4 translate <-1, 0, 0> texture { tinta_B } } #declare rabo = cylinder { < 0, -1.3, 0.0 > < -1.80, 0.60, 5.00 >, 0.25 texture { tinta_B } } #declare coxa = sphere { < 0, -1.1, 0 >, 0.5 scale <0, 2, 0> rotate <0, 0, 30> texture { tinta_B } } #declare canela = sphere { < 0, -1.8, 0 >, 0.5 scale <0, 1.5, 0> texture { tinta_B } } #declare pe = box { <1, -3, 0>, <2, -3.9, -1.5> texture { tinta_A } } /////////// Clock #if (clock < 0.25) // levanta perna direita (30 graus) //perna direita #declare cpd = clock*100*30/25; // angulo entre corpo e perna direita #declare pbd = 0; // angulo entre perna direita e bota direita //perna esquerda #declare cpe = 0; // angulo entre corpo e perna esquerda #declare pbe = 0; // angulo entre perna esquerda e bota esquerda //macaco #declare angulomacaco = 0; #declare translmacaco = 0; #else #if (clock < 0.5) // dobra joelho direito (-30 graus) //perna direita #declare cpd = 30; // angulo entre corpo e perna direita #declare pbd = (-1)*(clock-0.25)*100*30/25; // angulo entre perna direita e bota direita //perna esquerda #declare cpe = 0; // angulo entre corpo e perna esquerda #declare pbe = 0; // angulo entre perna esquerda e bota esquerda //macaco #declare angulomacaco = 0; #declare translmacaco = 0; #else #if (clock < 0.75) // macaco roda -10 graus; joelho direito volta 30 graus; joelho esquerdo dobra -10 graus //perna direita #declare cpd = 30; // angulo entre corpo e perna direita #declare pbd = -30 + (clock-0.5)*100*30/25; // angulo entre perna direita e bota direita //perna esquerda #declare cpe = 0; // angulo entre corpo e perna esquerda #declare pbe = (-1)*(clock-0.5)*100*10/25; // angulo entre perna esquerda e bota esquerda //macaco #declare angulomacaco = (-1)*(clock-0.5)*100*10/25; #declare translmacaco = (-1)*(clock-0.5)*100*(3)/25; #else // macaco volta 10 graus; perna direita volta -30 graus; joelho esquerdo volta 10 graus #declare cpd = 30-(clock-0.75)*100*30/25; // angulo entre corpo e perna direita #declare pbd = 0; // angulo entre perna direita e bota direita //perna esquerda #declare cpe = 0; // angulo entre corpo e perna esquerda #declare pbe = -10+(clock-0.75)*100*10/25; // angulo entre perna esquerda e bota esquerda //macaco #declare angulomacaco = -10+(clock-0.75)*100*10/25; #declare translmacaco = -3 + (-1)*(clock-0.5)*100*(1)/25; #end #end #end /////////// Pedacos do Corpo do Macaco #declare botadir = union { object { canela translate <-1.4,0,0>} object { pe translate <-3,0,0>} } #declare botaesq = union { object { canela translate <1.4,0,0>} object { pe } } #declare pernadir = union { object { coxa scale <-1,1,1> } object { botadir translate <1.4,1.8,0> rotate translate <-1.4,-1.8,0>} } #declare pernaesq = union { object { coxa } object { botaesq translate <-1.4,-1.8,0> rotate translate <1.4,1.8,0> } } #declare macaco = union { object { braco } object { braco scale <-1,1,1>} object { corpo } object { cabeca } object { olho } object { olho scale <-1,1,1>} object { nariz } object { orelha } object { orelha scale <-1,1,1>} object { rabo } object { pernadir rotate } object { pernaesq rotate } } #declare chao = plane { <0, 1, 0>, -3.9 pigment { checker color LightBlue, color White } } ////////// Montagem Final union { object { chao } object { macaco rotate translate <0,0,translmacaco>} }