// Last edited on 2003-05-28 17:41:36 by stolfi #include "colors.inc" #declare tempo = 2*clock; background{ color rgb < 0.00, 0.03, 0.15 > } // light_source { // < 0, 10.00, -20.00 > // color rgb < 1.00, 1.00, 1.00 > // } // light_source { // < 10, 10.00, -15.00 > // color rgb < 1.00, 1.00, 1.00 > // } light_source { 5*< 10, 12.00, -15.00 > color rgb 1.2*< 1.00, 1.00, 1.00 > } light_source { 5*< -30, 3.00, -5.00 > color rgb 0.8*< 1.00, 1.00, 1.00 > } light_source { 5*< -10, 4.00, -15.00 > color rgb 1.2*< 1.00, 1.00, 1.00 > } #declare obj_ctr = < 0, -5, -10 >; #declare cam_dir = < -20, 3, -5 >; camera { location obj_ctr + 0.77*cam_dir right x up y sky y look_at obj_ctr - (tempo-1)*5*z } #declare tinta_A = texture { pigment { color rgb < 0.10, 0.80, 1.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 tinta_C = //marrom texture { pigment { color rgb < 1, 0.70, 0.40 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_D = //vermelho texture { pigment { color rgb < 1.00, 0.10, 0.10 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare plano = plane { <0, 1, 0>, 0 pigment { checker color 0.3*Red+0.7*White, color 0.3*Blue+0.7*White } } #declare eixos = union { cylinder { <0,0,0>, <0,50,0>, .1 texture { tinta_A } } cylinder { <0,0,50>, <0,0,-50>, .1 texture { tinta_A } } cylinder { <0,5,50>, <0,5,-50>, .1 texture { tinta_A } } } //corpo consiste de caixa simples centrada na origem - ainda deve ser transladada para cima #declare corpo = box { <-2,-2,2>, // Near lower left corner <2,2,-2> // Far upper right corner texture { tinta_A } } #declare cintura = union { cylinder { <-1.5,0,0>, <1.5,0,0>, .4 texture { tinta_A } } } //coxa direita com o ponto 0,0,0 na origem do cilindro. //dessa forma as rotacoes da coxa sao triviais //ela eh declarada na rotacao inicial (macaco parado) #declare coxad = union { cylinder { <0,0,0>, <0,-4,-3>, .4 texture { tinta_A } } } //analogo a coxad #declare canelad = union { cylinder { <0,0,0>, <0,-4,3>, .3 texture { tinta_B } } } #declare ped = union { box { <-.6,-.2,0.4>, // Near lower left corner <.6,.2,-1.6> // Far upper right corner texture { tinta_A } } } #declare pernad0 = union { object { canelad } object { ped translate <0,-4,3> } rotate x*60*abs(sin(tempo*3.14159)) } #declare pernad = union { object { coxad } object { pernad0 translate <0,-4,-3> } rotate x*30*sin(tempo*3.14159) } #declare coxae = union { cylinder { <0,0,0>, <0,-4,-3>, .4 texture { tinta_A } } } //analogo a coxae #declare canelae = union { cylinder { <0,0,0>, <0,-4,3>, .3 texture { tinta_B } } } #declare pee = union { box { <-.6,-.2,0.4>, // Near lower left corner <.6,.2,-1.6> // Far upper right corner texture { tinta_A } } } #declare pernae0 = union { object { canelad } object { pee translate <0,-4,3> } rotate x*60*abs(cos(tempo*3.14159)) } #declare pernae = union { object { coxae } object { pernae0 translate <0,-4,-3> } rotate x*30*cos(tempo*3.14159) } #declare macaco = union { // object { corpo } object { cintura } object { pernad translate x*-2} object { pernae translate x*2} translate z*(-tempo*5) } union { object { macaco } object { plano translate -10*y} object { eixos } }