// Last edited on 2003-12-09 01:56:12 by stolfi #include "textures.inc" #include "colors.inc" background{ color Grey } // ====================================================================== #declare ZCH = -1.65; #declare ctr = < 0.00, 0.00, -0.30 >; // ZCH+0.1 #declare camDir = < 45.00, 35.00, 25.00 >; // 0.00 // sphere{ ctr, 5 texture{ pigment{ color rgb <1,0,1> } finish { ambient 0.6 diffuse 0.4 } } } camera { location ctr + 0.45*camDir right -0.64*x up 0.48*y sky z look_at ctr } plane{ z, ZCH texture{ pigment{ checker color rgb <0.7,0.6,0.5>, color rgb <0.6,0.5,0.2> } finish{ diffuse 0.7 ambient 0.3 } scale 2 } } // ====================================================================== // FONTES DE LUZ light_source { 10 * < +50.0, +30.0, +50.0 > // Posição da lâmpada. color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 10 * < +50.0, -10.0, +50.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 10 * < -10.0, 10.0, +50.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } //eixos #declare eixox = cylinder { < -5.00, 0.00, 0.00 >, < 5.00, 0.00, 0.00 >, 0.05 pigment { color Red } } #declare eixoy = cylinder { < 00, -5.00, 0.00 >, < 00, 5.00, 0.00 >, 0.05 pigment { color Black } } #declare eixoz = cylinder { < 0.0, 00, -5.00 >, < 0.0, 00, 5.00 >, 0.05 pigment { color Blue } } #declare corpo = sphere { < 0, 0, 0 >,4 pigment{color 0.8*Brown} scale<1,1,0.6> } #declare cabeca = sphere { < 0, 0, 0 >,2 pigment{color 0.8*Brown} scale<1,1,0.6> } #declare antena = difference{ torus { 2, 0.3 scale<0.8,0.8,0.8> } box { < -5.00, -5.00, 1.00 >, < 5.00, 5.00, -4.00 > rotate 45*y } pigment{color 0.8*Brown} rotate -90*z rotate -20*x } #declare dy = 0; #declare i=0; #declare j=1; #declare k=0; #while(i<6) #if((i=1)|(i=2)|(i=3)) #declare clockp=clock; #else #if(clock>=0.75) #declare clockp=clock-0.75; #declare k=0;//1; #else #declare clockp=clock+0.25; #end #end #if(clockp<=0.25) //levanta e encolhe #declare pas = clockp / (0.25);//passo variando de 0 a 1 em 0 - 0.25 #declare beta = 45+15*pas; #declare gama = 90; #declare alfa = 90+20*pas; #declare delta = 65+30*pas; #declare frente = 0; #else #if(clockp<=0.5)//pra frente e avante! #declare pas = (clockp-0.25)/(0.25);//passo variando de 0 a 1 em 0.25 - 0.5 #declare beta = 60;//+15*pas; #declare gama = 90; #declare alfa = 110;; #declare delta = 95; #declare frente = -20*pas; // rotate em z #else #if(clockp<=0.75)// coloca a perna no chao #declare pas =(clockp-0.5)/(0.25);//passo variando de 0 a 1 em 0.5 - 0.75 #declare beta = 60-15*pas; #declare gama = 90; #declare alfa = 110-20*pas; #declare delta = 95-30*pas; #declare frente = -20; #else //e anda #declare pas =(clockp-0.75)/(0.25);//passo variando de 0 a 1 em 0.75 - 1 #declare beta = 45; #declare gama = 90; #declare alfa = 90; #declare delta = 65; #declare frente = -20+20*pas; #declare dy = 0;//1*pas; #end #end #end #declare L1=2; #declare L2=2.5; #declare L3=4; #if((i=0)|(i=3)) #declare B=0; #declare A=-3.5; #end #if((i=1)|(i=4)) #declare B=1.5; #declare A=-3; #end #if((i=2)|(i=5)) #declare B=-1.5; #declare A=-3; #end //#declare A=-3.5; #declare C=0; #declare pe = box { < -1.00, -1.00, -1.00 >, < 1.00, 1.00, 0.30 > scale 0.6*<1,1,1> pigment{color Brown} rotate gama*x translate<0,L1,0> } #declare pernoide = union{ cylinder { < 0.0, 0, 0.00 >, < 0.0, L1, 0.00 >, 0.5 pigment{color Brown} } object{pe} rotate beta*x translate<0,L2,0> } #declare preperna = union{ cylinder { < 0.0, 0, 0.00 >, < 0.0, L2, 0.00 >, 0.5 } sphere { < 0, L2, 0 >,0.5 pigment{color Brown} } object{pernoide} pigment{color Brown} rotate alfa*x translate<0,L3,0> } #declare perna = union{ cylinder { < 0.0, 0, 0.00 >, < 0.0, L3, 0.00 >, 0.5 } sphere { < 0, L3, 0 >,0.5 pigment{color Brown} } object{preperna} pigment{color Brown} rotate -180*x rotate -90*z rotate -20*y } object{corpo translate<0,k+dy,0>} object{cabeca translate<0,4+k+dy,0>} object{antena translate<-0.8,6+k+dy,0> } object{antena translate<0.8,6+k+dy,0> } #if(i<3) //pernadireita object{ perna rotate delta*y rotate frente*z translate //posicao da perna } #else //perna esquerda object{perna rotate delta*y rotate frente*z translate //posicao da perna scale <-1,1,1> } #end #declare i=i+1; #end