// Last edited on 2023-12-25 12:11:07 by stolfi #include "eixos.inc" // #include "transforms.inc" // Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2023-12-25 12:07:31 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.8, 0.8, 0.8 > } #declare roleta = seed(1246553); #declare tx_art = texture{ pigment{ color rgb < 1, 0.25, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_memb = texture{ pigment{ color rgb < 0.01, 1, 0.12 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_corp = texture{ pigment{ color rgb < 0.9, 0.1, 0.8 > } finish{ diffuse 0.9 ambient 0.1 } } #declare raio_art = 1.5; #declare raio_memb = 1; #declare artc = sphere { <0, 0, 0> raio_art texture {tx_art}} #macro memb(x1, y1, z1) cylinder { <0, 0, 0> raio_memb texture { tx_memb }} #end #macro garra(abert, abert_dedo, ry) #local tam_garra = 3; #declare finger = union { object { artc } object { artc translate <0, 0, -tam_garra> rotate <-abert_dedo, 0, 0>} object { memb(0, 0, -tam_garra) rotate <-abert_dedo, 0, 0>} } #declare fingers = union { object { memb(0, 0, -tam_garra) rotate } object { finger translate <0, 0, -tam_garra> rotate } } union { object { artc } object { fingers } object { fingers scale <1, -1, 1>} rotate <0, ry, 0> } #end #macro braco(xi, yi, ant_x, brac_z) #local tam_memb = 7; #local antebraco = union { object { artc } object { garra(60, 70, brac_z) translate <0, 0, -tam_memb> } // parametros object { memb(0, 0, -tam_memb) } rotate } union { object { artc } object { memb(0, 0, -tam_memb) rotate } object { antebraco translate <0, 0, -tam_memb> rotate } } #end #macro pesc(xi, yi, ant_x, ant_y, brac_z) #local tam_memb_1 = 3; #local tam_memb_2 = 5; #local antebraco = union { object { artc } object { artc scale <3, 3, 3> translate <0, 0, tam_memb_1+3*raio_art>} object { memb(0, 0, tam_memb_1) } rotate } union { object { artc } object { memb(0, 0, tam_memb_2) rotate } object { antebraco translate <0, 0, tam_memb_2> rotate } } #end #macro robo(D11, D12, D13, D14, E11, E12, E13, E14, D21, D22, D23, D24, E21, E22, E23, E24, P1, P2, P3, P4, P5) #local brac_1 = <8, -6, 0>; #local brac_2 = <8, 6, 0>; #local pern_1 = <-8, -6, 0>; #local pern_2 = <-8, 6, 0>; #local pesc_1 = <12, 0, 0>; union{ object { braco(D11, D12, D13, D14) translate brac_1 } object { braco(E11, E12, E13, E14) translate brac_2 } object { braco(D21, D22, D23, D24) translate pern_1 } object { braco(E21, E22, E23, E24) translate pern_2 } object { pesc(P1, P2, P3, P4, P5) translate pesc_1 } box { <-6, -3, -2>, <6, 3, 2> texture { tx_corp } scale <2, 2, 2> } } #end #macro cena(clk) #local first_limb = 30 + sin(clk*pi)*60; #local second_limb = 90 - sin(clk*pi)*90; object { robo( -first_limb, 00, second_limb, 00, first_limb, 00,-second_limb, 00, -first_limb, 00, second_limb, 00, first_limb, 00,-second_limb, 00, 00, 90, 00, 30, 00 ) rotate <0, -90, 00> } #end cena(clock) // object{ eixos(20) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 7.00 >; #declare raio_cena = 40.0; #declare dir_camera = < 7, 5, 3 >; #declare dist_camera = 7*raio_cena; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)