// CORES E TEXTURAS #include "colors.inc" #include "textures.inc" background{ color Quartz } // DESCRICAO DA CENA #declare orelha = difference { cone { <0,0,0> 0.5 <0,0,1> 0 pigment { color Flesh } } cone { <0,0,0> 0.5 <0,0,1> 0 pigment { color Flesh } translate <0.2,0,-0.2> } } #declare bigode = union { cylinder { <0,0,0>, <0,0,0.8> 0.005 pigment { color Gray } rotate<-80,0,0> translate<0.08,0,0.05> } cylinder { <0,0,0>, <0,0,0.8> 0.005 pigment { color Gray } rotate<-90,0,-10> translate<0.1,0,0> } cylinder { <0,0,0>, <0,0,0.8> 0.005 pigment { color Gray } rotate<-110,0,0> translate<0.08,0,-0.05> } cylinder { <0,0,0>, <0,0,0.8> 0.005 pigment { color Gray } rotate<80,0,0> translate<0.08,0,0.05> } cylinder { <0,0,0>, <0,0,0.8> 0.005 pigment { color Gray } rotate<90,0,10> translate<0.1,0,0> } cylinder { <0,0,0>, <0,0,0.8> 0.005 pigment { color Gray } rotate<110,0,0> translate<0.08,0,-0.05> } } #declare focinho = union { sphere { <0,0.1,0> 0.2 pigment { color Flesh } } sphere { <0,-0.1,0> 0.2 pigment { color Flesh } } cone { <0,0,0> 0.15 <0,0,0.2> 0 pigment { color Black } rotate<0,180,0> translate<0.13,0,0.2> } object { bigode } } #declare olho = union{ sphere { <0,0,0> 0.3 pigment { color White } } sphere { <0,0,0> 0.25 pigment { Sapphire_Agate } translate<0.065,0,0> } } #macro cabeca() union { sphere { <0,0,0> 1 pigment { color Flesh } } object { orelha rotate<30,0,0> translate<0.15,-0.4,0.5> } object { orelha rotate<-30,0,0> translate<0.15,0.4,0.5> } object { focinho translate<0.95,0,0> } object { olho translate<0.6,0.4,0.3> } object { olho translate<0.6,-0.4,0.3> } } #end #macro mao() union { sphere { <0,0,0>, 0.3 pigment { color Flesh } scale<1, 0.65, 1> } sphere { <0,0,0>, 0.15 pigment { color Flesh } translate <0,0,0.3> } sphere { <0,0,0>, 0.15 pigment { color Flesh } translate <0.25,0,0.25> } sphere { <0,0,0>, 0.15 pigment { color Flesh } translate <-0.25,0,0.25> } } #end #macro antebraco(rotxm, rotym, rotzm) union { sphere { <0,0,0> 0.25 pigment { color Flesh } } cone { <0,0,0> 0.23 <0,0,0.6> 0.15 pigment { color Flesh } translate <0,0,0.1> } union { mao() rotate<0,0,rotzm> translate<0,0,0.8> } } #end #macro braco(roty, rotz, rotxm, rotym, rotzm) union { sphere { <0,0,0> 0.45 pigment { color Flesh } } cone { <0,0,0> 0.4 <0,0,1> 0.2 pigment { color Flesh } translate <0,0,0.2> } union { antebraco(rotxm, rotym, rotzm) rotate <0,roty,rotz> translate <0,0,1.1> } } #end #macro pe() union { sphere { <0,0,0>, 0.3 pigment { color Flesh } scale<1, 0.65, 1> } sphere { <0,0,0>, 0.15 pigment { color Flesh } translate <0,0,0.3> } sphere { <0,0,0>, 0.15 pigment { color Flesh } translate <0.25,0,0.25> } sphere { <0,0,0>, 0.15 pigment { color Flesh } translate <-0.25,0,0.25> } } #end #macro perna(rotxp, rotyp, rotzp) union { sphere { <0,0,0> 0.25 pigment { color Flesh } } cone { <0,0,0> 0.23 <0,0,0.6> 0.15 pigment { color Flesh } translate <0,0,0.1> } union { pe() rotate<0,0,rotzp> rotate<0,rotyp,0> translate<0,0,0.8> } } #end #macro coxa(roty, rotz, rotxp, rotyp, rotzp) union { sphere { <0,0,0> 0.45 pigment { color Flesh } } cone { <0,0,0> 0.4 <0,0,1> 0.2 pigment { color Flesh } translate <0,0,0.2> } union { perna(rotxp, rotyp, rotzp) rotate <0,roty,rotz> translate <0,0,1.1> } } #end #declare tronco = union { sphere { <0,0,0> 1.2 pigment { color Flesh } scale <1,1,1.2> } } #macro gato(bdx,bdy,bdz,abdx, abdy, bdmx, bdmy, bdmz, bex,bey,bez,abex, abey, bemx, bemy, bemz, pdx,pdy,pdz,apdx, apdy, pdpx, pdpy, pdpz, pex,pey,pez,apex, apey, pepx, pepy, pepz) union { cabeca() object{ tronco translate <0,0,-2.2> } union { braco(abdx, abdy, bdmx, bdmy, bdmz) rotate<0,bdy,0> rotate translate<0.6,1,-1.2> } union { braco(abex, abey, bemx, bemy, bemz) rotate<0,bey,0> rotate translate<0.6,-1,-1.2> } union { coxa(apdx, apdy, pdpx, pdpy, pdpz) rotate translate<0,0.8,-3.4> } union { coxa(apex, apey, pepx, pepy, pepz) rotate translate<0,-0.8,-3.4> } } #end // Declaracao dos vetores para cada parametro variavel // (parametros 3 e 4 nao variam) #declare nq = 6; #declare param1 = array[nq]; #declare param2 = array[nq]; #declare param5 = array[nq]; #declare param6 = array[nq]; #declare param7 = array[nq]; #declare param8 = array[nq]; // Atribuicao dos angulos de cada parametro por quadro #declare param1[0] = 30; #declare param1[1] = 90; #declare param1[2] = 180; #declare param1[3] = 270; #declare param1[4] = 120; #declare param1[5] = 30; #declare param2[0] = -30; #declare param2[1] = -270; #declare param2[2] = -180; #declare param2[3] = -90; #declare param2[4] = -120; #declare param2[5] = -30; #declare param5[0] = -180; #declare param5[1] = -180; #declare param5[2] = -180; #declare param5[3] = -150; // mas é o angulo em y, nao em x #declare param5[4] = -130; #declare param5[5] = -180; #declare param6[0] = 180; #declare param6[1] = 150; // mas é o angulo em -y, nao em x #declare param6[2] = 180; #declare param6[3] = 180; #declare param6[4] = 130; #declare param6[5] = 180; #declare param7[0] = 0; #declare param7[1] = 0; #declare param7[2] = 0; #declare param7[3] = 150; // em y #declare param7[4] = 0; #declare param7[5] = 0; #declare param8[0] = 0; #declare param8[1] = 150; // em y #declare param8[2] = 0; #declare param8[3] = 0; #declare param8[4] = 0; #declare param8[5] = 0; // TEMPO #declare tempo = array[nq]; #declare tempo[0] = 0.0; #declare tempo[1] = 0.2; #declare tempo[2] = 0.4; #declare tempo[3] = 0.6; #declare tempo[4] = 0.8; #declare tempo[5] = 1.0; // Macro para calculo de valores intermediarios #macro interpola(f0, v0, f1, v1, F) #local ss = (F-f0)/(f1-f0); #local rr = 1-ss; (rr*v0 + ss*v1) #end #macro quadro_anterior(fase) #local i = 0; #while (i < nq) #if((tempo[i]<=fase) & (tempo[i+1]>=fase)) #local resp = i; #end #local i = i + 1; #end resp #end #macro Cat_Dance(fase) #end // CENA union { union { gato(30,180,0,0,0,0,0,90,-270,180,0,0,0,0,0,90,-180,0,0,0,0,0,90,90,180,0,0,0,0,0,90,90) translate <0,0,1> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 2.00, 0.01, 0.00 >; #declare dist_camera = 10.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)