// Last edited on 2023-12-23 19:55:23 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.5, 0.5, 0.5 > } #declare branco = texture{ pigment{ color rgb < 1.000, 1.000, 0.900 > } finish{ diffuse 0.9 ambient 0.1 } } #declare preto = texture{ pigment{ color rgb < 0.400, 0.400, 0.800 > } finish{ diffuse 0.9 ambient 0.1 } } #declare corpo = box{ <-5,-5,-5>,<5,5,5> texture{branco} } #declare cilindro = cylinder{ <0,0,0>,<0,0,5>,1 texture{preto} } #declare cilindro2 = cylinder{ <0,0,0>,<0,0,10>,1 texture{preto} } #declare pe = sphere{ <0,0,0>,1.5 texture{branco} } #declare cabeca= sphere{ <0,0,0>,3 texture{branco} } #macro pata(a1) object{ union{ object{cilindro translate<0,0,-5>} object{pe translate<0,0,-5>} } rotate a1*y} #end #macro coxa(a1,a2) object{ union{ object{cilindro translate<0,0,-5>} object{pata(a2) translate<0,0,-5>} } rotate a1*y } #end #macro perna(a1,a2,a3,a4) object{ union{ object{cilindro translate<0,0,-5>} object{coxa(a3,a4) translate<0,0,-5>} } rotate a1*y rotate a2*z } #end #macro cranio(a1) object{ union{ object{cilindro2 } object{cabeca translate<0,0,10>} } rotate a1*y} #end #macro pescoco(a1,a2) object{ union{ object{cilindro } object{cranio(a2) translate<0,0,5>} } rotate a1*y } #end #macro nuca(a1,a2,a3,a4) object{ union{ object{cilindro } object{pescoco(a3,a4) translate<0,0,5>} } rotate a1*y rotate a2*z } #end #macro preguica(P1,P2,P3,P4,C) // vetores Pn para as pernas com quatro elementos cada representando os angulos definidos no macro perna(), idem para o vetor C representando a cabeça union{ object{corpo} object{perna(P1[0],P1[1],P1[2],P1[3]) translate<-5,-5,-5>} object{perna(P2[0],P2[1],P2[2],P2[3]) translate<-5,5,-5>} object{perna(P3[0],P3[1],P3[2],P3[3]) translate<5,-5,-5>} object{perna(P4[0],P4[1],P4[2],P4[3]) translate<5,5,-5>} object{nuca(C[0],C[1],C[2],C[3]) translate<0,0,5>} } #end #include "eixos.inc" #declare DX = 20; #declare DY = 20; #declare DZ = 20; #macro bicho1() #local P1=array[4] {45,90,45,45}; #local P2=array[4] {45,0,45,45}; #local P3=array[4] {45,180,45,45}; #local P4=array[4] {45,270,45,45}; #local C=array[4] {45,90,45,45} object{ preguica(P1,P2,P3,P4,C) } #end #macro bicho2() #local P1=array[4] {25, 70, -15, -35}; #local P2=array[4] {35, 20, -65, -25}; #local P3=array[4] {75, 160, -25, -55}; #local P4=array[4] {15, 250, -55, -65}; #local C=array[4] {-25, 110, 75, 35} object{ preguica(P1,P2,P3,P4,C) } #end object{ bicho1() } object{ bicho2() translate 2*DX*x } #declare cmin = < -DX, -DY, -DZ >; #declare cmax = < +3*DX, +DY, +DZ >; #include "gaiola.inc" // object{ gaiola(cmin,cmax) } #declare centro_cena = (cmin + cmax)/2; #declare raio_cena = 0.55*vlength(cmax-cmin); #declare dist_camera = 7*raio_cena; #include "camlight.inc" #declare dir_camera = < 5, 7, 4 >; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)