// Last edited on 2023-12-25 13:30:46 by stolfi background{ color rgb < 0.90, 0.80, 0.85 > } #declare tx_fosca_cinza = texture{ pigment{ color rgb 2*< 0.3, 0.3, 0.3 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_bug = texture{ pigment{ color rgb < 1.000, 0.500, 0.000 > } finish{ diffuse 0.4 ambient 0.6 } } #declare roleta = seed(1); #declare corpo = box { <-1, -2, -3>, <1, 2, 3> texture{ tx_bug } } #macro pata() #local dedo1 = cylinder{<-1,-1,-8>, <-1,-3,-8>, 0.3} #local dedo2 = cylinder{<-1,-1,-8>, <-1,-5,-8>, 0.3} #local dedo3 = cylinder{<-2,-1,-7.5>, <-2,-3,-7.5>, 0.3} #local dedo4 = cylinder{<2,0,-7.5>, <2,-3,-7.5>, 0.3} union { object{dedo1 texture{tx_fosca_cinza}} object{dedo2 texture{tx_fosca_cinza}} object{dedo3 rotate<0,0,90> texture{tx_fosca_cinza}} object{dedo4 rotate<0,0,270> texture{tx_fosca_cinza}} } #end #macro subPerna(p3,p4) #local quadriceps = cylinder {<-1,-1,-5>, <-1,-1,-8>, 0.5} #local sub = object{pata()} #local juntas = sphere {<-1,-1,-8>, 0.6} union { object{quadriceps texture{tx_fosca_cinza}} object{sub rotate p3*y translate<0,2,0>} object{juntas texture{tx_fosca_cinza}} } #end #macro perna(p1,p2,p3,p4) #local origem = cylinder {<-1,1,-3>, <-1,1,-5>, 0.5} #local sub = object{subPerna(p3,p4)} #local juntas = sphere {<-1,1,-5>, 0.6} union { object{origem texture{tx_fosca_cinza}} object{sub rotate p2*y translate<0,2,0>} object{juntas texture{tx_fosca_cinza}} } #end #macro dedos_braco() #local dedo1 = cylinder{<0,0,0>, <0,1.5,1>, 0.3} #local dedo2 = cylinder{<0,0,0>, <0,2,1>, 0.3} #local dedo3 = cylinder{<0,0,0>, <0,2.5,1>, 0.3} #local dedo4 = cylinder{<0,0,0>, <0,3,1>, 0.3} union { object{dedo1 texture{tx_fosca_cinza}} object{dedo2 texture{tx_fosca_cinza}} object{dedo3 texture{tx_fosca_cinza}} object{dedo4 texture{tx_fosca_cinza}} } #end #macro subbraco(p3,p4) #local triceps = cylinder {<1, 4, 2.5>, <1, 4, 0>, 0.5} #local sub = object{dedos_braco()} #local juntas = sphere {<1, 4, 0>, 0.6} union { object{triceps texture{tx_fosca_cinza}} object{sub rotate p3*x translate<1, 4, 0>} object{juntas texture{tx_fosca_cinza}} } #end #macro braco(p1,p2,p3,p4) #local origem = cylinder {<1, 2, 2.5>, <1, 6, 2.5>, 0.5} #local sub = object{subbraco(p3,p4)} #local juntas = sphere {<1, 6, 2.5>, 0.6} union { object{origem texture{tx_fosca_cinza}} object{sub rotate p2*y translate<0,2,0>} object{juntas texture{tx_fosca_cinza}} } #end #macro cranio() sphere { <0, 0, 0>, 1 } #end #macro subcabeca(c3,c4) #local pescoco2 = cylinder {<0, 0, 0>, <0,0,8>, 0.5} #local juntas = sphere {<0,0,8>, 0.6} #local k = object{cranio()} union { object{pescoco2 texture{tx_fosca_cinza}} object{juntas texture{tx_fosca_cinza}} object{k translate<0,0,8> texture{tx_fosca_cinza}} } #end #macro cabeca(c1,c2,c3,c4) #local pescoco = cylinder {<0, 0, 1.5>, <0, 0, 6>, 0.5} #local sub = object{subcabeca(c3,c4)} #local juntas = sphere {<0, 0, 6>, 0.6} union { object{pescoco texture{tx_fosca_cinza}} object{sub rotate c2*y translate<0, 0, 6>} object{juntas texture{tx_fosca_cinza}} } #end #macro robo(c1,c2,c3,c4, b1,b2,b3,b4,d1,d2,d3,d4, e1,e2,e3,e4, p1,p2,p3,p4) union { object{corpo} object{perna(p1,p2,p3,p4) rotate p1*z} object{perna(p1,p2,p3,p4) rotate p1*z scale<1,-1,1>} object{braco(b1,b2,b3,b4) rotate b1*z} object{braco(b1,b2,b3,b4) rotate b1*z scale<1,-1,1>} object{cabeca(c1,c2,c3,c4)} } #end #include "eixos.inc" // object{ eixos(20) } union { #local c1 = +30*sin(2*pi*clock); #local c2 = +45*sin(2*pi*clock); #local c3 = -40*sin(2*pi*clock); #local c4 = +60*sin(2*pi*clock); #local b1 = +60*sin(2*pi*clock); #local b2 = +30*sin(2*pi*clock); #local b3 = +60*sin(2*pi*clock); #local b4 = -60*sin(2*pi*clock); #local d1 = +40*sin(2*pi*clock); #local d2 = -60*sin(2*pi*clock); #local d3 = +40*sin(2*pi*clock); #local d4 = +60*sin(2*pi*clock); #local e1 = -40*sin(2*pi*clock); #local e2 = +40*sin(2*pi*clock); #local e3 = +30*sin(2*pi*clock); #local e4 = +60*sin(2*pi*clock); #local p1 = +60*sin(2*pi*clock); #local p2 = -40*sin(2*pi*clock); #local p3 = +50*sin(2*pi*clock); #local p4 = -70*sin(2*pi*clock); object{robo(c1,c2,c3,c4, b1,b2,b3,b4,d1,d2,d3,d4, e1,e2,e3,e4, p1,p2,p3,p4)} } #include "camlight.inc" #declare centro_cena = < 0, 0, 5 >; #declare raio_cena = 20.0; #declare dir_camera = < 7, 5, 3 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)