// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.5 ambient 0.5 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare raio = 2.000; #declare NQ=9; #declare angOmbros = array[NQ]; #declare angOmbros[0] = 3; #declare angOmbros[1] = -3; #declare angOmbros[2] = -6; #declare angOmbros[3] = -3; #declare angOmbros[4] = 3; #declare angOmbros[5] = -3; #declare angOmbros[6] = -6; #declare angOmbros[7] = -3; #declare angOmbros[8] = 3; #declare angCotovs = array[NQ]; #declare angCotovs[0] = 12; #declare angCotovs[1] = 14; #declare angCotovs[2] = 9; #declare angCotovs[3] = 12; #declare angCotovs[4] = 7; #declare angCotovs[5] = 12; #declare angCotovs[6] = 9; #declare angCotovs[7] = 14; #declare angCotovs[8] = 12; #declare angBacDir = array[NQ]; #declare angBacDir[0] = 8; #declare angBacDir[1] = 5; #declare angBacDir[2] = 2; #declare angBacDir[3] = 4; #declare angBacDir[4] = 6; #declare angBacDir[5] = 4; #declare angBacDir[6] = 2; #declare angBacDir[7] = 4; #declare angBacDir[8] = 8; #declare angBacEsq = array[NQ]; #declare angBacEsq[0] = 6; #declare angBacEsq[1] = 4; #declare angBacEsq[2] = 2; #declare angBacEsq[3] = 5; #declare angBacEsq[4] = 8; #declare angBacEsq[5] = 5; #declare angBacEsq[6] = 2; #declare angBacEsq[7] = 4; #declare angBacEsq[8] = 6; #declare angJoeDir = array[NQ]; #declare angJoeDir[0] = 2; #declare angJoeDir[1] = 4; #declare angJoeDir[2] = 6; #declare angJoeDir[3] = 9; #declare angJoeDir[4] = 12; #declare angJoeDir[5] = 9; #declare angJoeDir[6] = 6; #declare angJoeDir[7] = 4; #declare angJoeDir[8] = 2; #declare angJoeEsq = array[NQ]; #declare angJoeEsq[0] = 12; #declare angJoeEsq[1] = 9; #declare angJoeEsq[2] = 6; #declare angJoeEsq[3] = 4; #declare angJoeEsq[4] = 2; #declare angJoeEsq[5] = 4; #declare angJoeEsq[6] = 6; #declare angJoeEsq[7] = 9; #declare angJoeEsq[8] = 12; #declare angPeDir = array[NQ]; #declare angPeDir[0] = 1; #declare angPeDir[1] = 4; #declare angPeDir[2] = 7; #declare angPeDir[3] = 10; #declare angPeDir[4] = 15; #declare angPeDir[5] = 10; #declare angPeDir[6] = 7; #declare angPeDir[7] = 4; #declare angPeDir[8] = 1; #declare angPeEsq = array[NQ]; #declare angPeEsq[0] = 15; #declare angPeEsq[1] = 10; #declare angPeEsq[2] = 7; #declare angPeEsq[3] = 4; #declare angPeEsq[4] = 1; #declare angPeEsq[5] = 4; #declare angPeEsq[6] = 7; #declare angPeEsq[7] = 10; #declare angPeEsq[8] = 15; declare fq = array[NQ]; #declare fq[0] = 0.000; #declare fq[1] = 0.125; #declare fq[2] = 0.250; #declare fq[3] = 0.375; #declare fq[4] = 0.500; #declare fq[5] = 0.625; #declare fq[6] = 0.750; #declare fq[7] = 0.875; #declare fq[8] = 1.000; #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=FASE)) #local quad=i; #end #local i=i+1; #end quad #end #macro orelha () union{ box{<-0.5,0,0>, <0.5,0.1,3> texture{tx_fosca}} cylinder{<0,0,3>, <0,0.1,3>, 0.5 texture{tx_fosca}} } #end #macro cabeca () union{ sphere{<0,0,0>, 1 texture{tx_fosca}} object{orelha() rotate<0,30,0>} object{orelha() rotate<0,-30,0>} } #end #macro corpo () union{ sphere{<0,0,0>, 1.5 texture{tx_fosca}} sphere{<0,0,1>, 1.5 texture{tx_fosca}} cylinder{<0,0,0>, <0,0,1>, 1.5 texture{tx_fosca}} object{cabeca() translate<0,0,3>} } #end #macro maozinha () union{ cone{<0,0,0>, 0.35, <0,0,1.4>, 0.4 texture{tx_fosca}} sphere{<0,0,1.4>, 0.45 texture{tx_fosca}} } #end #macro bracinho (COTOVELO) union{ sphere{<0,0,0>, 0.35 texture{tx_fosca}} cylinder{<0,0,0>, <0,0,1.6>, 0.35 texture{tx_fosca}} sphere{<0,0,1.6>, 0.35 texture{tx_fosca}} object{maozinha() rotate<-10*COTOVELO,0,0> translate<0,0,1.6>} } #end #macro pezinho () union{ cone{<0,0,0>, 0.45, <0,0,1.5>, 0.6 texture{tx_fosca}} sphere{<0,0,0>, 0.45 texture{tx_fosca}} cylinder{<0,0,0.6>, <0,0,1.9>, 0.61 texture{tx_plastico}} sphere{<0,0,1.9>, 0.61 texture{tx_plastico}} } #end #macro perninha (TORNOZELO) union{ cone{<0,0,0>, 0.35 <0,0,1.4>, 0.45 texture{tx_fosca}} sphere{<0,0,0>, 0.35 texture{tx_fosca}} object{pezinho() rotate<-10*TORNOZELO,0,0> translate<0,0,1.6>} } #end #macro coxinha (JOELHO,TORNOZELO) union{ cylinder{<0,0,0>, <0,0,1.3>, 0.35 texture{tx_fosca}} sphere{<0,0,0>, 0.35 texture{tx_fosca}} object{perninha(TORNOZELO) rotate<(10*JOELHO),0,0> translate<0,0,1.3>} } #end #macro coelho_de_botas (OMBRO_DIR, COTOVELO_DIR, OMBRO_ESQ, COTOVELO_ESQ, BACIA_DIR, JOELHO_DIR, TORNOZELO_DIR, BACIA_ESQ, JOELHO_ESQ, TORNOZELO_ESQ) union{ object{corpo()} object{bracinho(COTOVELO_DIR) scale<0,0,-1> rotate<(-10*OMBRO_DIR),-10,0> translate<1.5,0,1.7>} object{bracinho(COTOVELO_ESQ) scale<0,0,-1> rotate<(-10*OMBRO_ESQ),10,0> translate<-1.5,0,1.7>} object{coxinha(JOELHO_DIR,TORNOZELO_DIR) scale<0,0,-1> rotate<(10*BACIA_DIR),-10,0> translate<1,0,-0.5>} object{coxinha(JOELHO_ESQ,TORNOZELO_ESQ) scale<0,0,-1> rotate<(10*BACIA_ESQ),10,0> translate<-1,0,-0.5>} } #end #macro coelho_cancan (FASE) // FASE varia de 0.0 a 1.0 union{ #local i = quadro_anterior(FASE); #local omb = interpola(fq[i],angOmbros[i],fq[i+1],angOmbros[i+1],FASE); #local cot = interpola(fq[i],angCotovs[i],fq[i+1],angCotovs[i+1],FASE); #local bd = interpola(fq[i],angBacDir[i],fq[i+1],angBacDir[i+1],FASE); #local jd = interpola(fq[i],angJoeDir[i],fq[i+1],angJoeDir[i+1],FASE); #local td = interpola(fq[i],angPeDir[i],fq[i+1],angPeDir[i+1],FASE); #local be = interpola(fq[i],angBacEsq[i],fq[i+1],angBacEsq[i+1],FASE); #local je = interpola(fq[i],angJoeEsq[i],fq[i+1],angJoeEsq[i+1],FASE); #local te = interpola(fq[i],angPeEsq[i],fq[i+1],angPeEsq[i+1],FASE); object{coelho_de_botas(omb,cot,omb,cot,bd,jd,td,be,je,te)} } #end #include "eixos.inc" union{ object{coelho_cancan(clock)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.50 >; #declare raio_cena = 20; #declare dir_camera = < 5.00, 2.50, 2.50 >; #declare dist_camera = 20; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)