// Last edited on 2003-12-09 03:32:38 by stolfi // Vitor Sexto Bernardes - RA 010063 #declare clock0 = clock; // vai de 0 a 1 #declare clock1 = mod(clock + 0.5, 1); // vai de .5 a 1, vai pra 0, depois de 0 a .5 // ====================================================================== #declare ctr = <0, 0, 0>; #declare camDir = <-14, 12, 11>; camera { location ctr + 1.10*camDir right 1.00*x up 0.75*y sky z look_at ctr } // ====================================================================== // FONTES DE LUZ light_source { < 0, 20, 50 > // Posição da lâmpada. color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { < -25, 0, 50 > // Posição da lâmpada. color rgb 0.5 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { < -50, 50, 50 > // Posição da lâmpada. color rgb 0.4 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // DESCRIÇÃO DA CENA #declare tx_corpo = texture { pigment { color rgb <0.8, 0.9, 0.2> } } #declare tx_perna = texture { pigment { color rgb <0.5, 0.3, 0> } } #declare chao = plane { <0, 0, -1>, 1 pigment { granite scale <11, 11, 11> } finish { ambient 0.1 specular .25 reflection .2 } } #declare raio_corpo = 3; #declare corpo = union { intersection { sphere { <0,0,0>, raio_corpo scale <1,1,0.6> } sphere { <0,0,3>, 4.5 scale <1,1,0.6> } texture { tx_corpo } finish { phong .5 } } } #declare art4 = union { cylinder { <0, 0, 0>, <0, 0, -2>, 0.4 rotate 90*y } sphere { <0,0,0>, 0.4 } texture { tx_perna } } #macro art3(delta) union { cylinder { <0, 0, 0>, <0, 0, -3>, 0.4 texture { tx_perna } } sphere { <0,0,0>, 0.4 texture { tx_perna } } object { art4 rotate delta*z translate <0, 0, -3> } } #end #macro art2(gama, delta) union { cylinder { <0, 0, 0>, <0, 0, -3>, 0.4 texture { tx_perna } } sphere { <0, 0, 0>, 0.4 texture { tx_perna } } object { art3(delta) rotate gama*x translate <0, 0, -3> } } #end #macro art1(beta, gama, delta) union { cylinder { <0, 0, 0>, <0, 0, -2>, 0.4 texture { tx_perna } } sphere { <0, 0, 0>, 0.4 texture { tx_perna } } object { art2(gama, delta) rotate beta*y translate <0, 0, -2> } } #end // ====================================================================== // CENA FINAL #declare altura = 4; object { chao } object { corpo translate <0, 0, altura>} #declare i=0; // contador dos braços (radianos) #declare j=1; // auxiliar para ver a qual conjunto o braço pertence #while (i<=2*pi) #if (mod(j,2) = 0) // um grupo de braços #declare clockp = clock0; #else // outro grupo de braços #declare clockp = clock1; #end #declare mov = -30*sin(2*pi*clockp + pi/2) + 15; // ângulo de movimento #if (clockp >= 0 & clockp < 0.5) #declare alfa = -120; #declare beta = 70; #else // clockp vai de .5 a 1!! #declare clockaux = 2*clockp - 1; // vai de 0 a 1 #declare alfa = 40*sin(pi*clockaux + pi) - 120; #declare beta = 50*sin(pi*clockaux) + 70; #end #declare gama = 0; #declare delta = 0; object { art1(beta, gama, delta) rotate alfa*y rotate mov*z rotate degrees(i)*z translate // dando a volta no corpo } #declare i=i+pi/3; #declare j=j+1; #end