//NOME: Plinio A. S. Freire ra082505 // ============================================================================================ #include "eixos.inc" #declare valores = array[10]; #declare valores[0] = 0; #declare valores[1] = 1; #declare valores[2] = 2; #declare valores[3] = 3; #declare valores[4] = 4; #declare valores[5] = 5; #declare valores[6] = 6; #declare valores[7] = 7; #declare valores[8] = 8; #declare valores[9] = 9; #declare roleta = seed(417); //camera e luz #include "camlight.inc" #declare centro_cena = < 0.00, 4.00, 5.00 >; #declare raio_cena = 15.0; #declare dir_camera = < 20,0,0 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz) // cores e texturas 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.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } #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 tx_red = texture{ pigment{ color rgb <1, 0, 0 >} finish{ diffuse 0.9 ambient 0.1 } } #declare tx_green = texture{ pigment{ color rgb <0, 1, 0>} finish{ diffuse 0.9 ambient 0.1 } } #declare tx_blue = texture{ pigment{ color rgb <0, 0, 1>} finish{ diffuse 0.9 ambient 0.1 } } #declare tx_marrom = texture{ pigment{ color rgb <0.8,0.6,0.3>} } //macro ////////////////////////////////////////////////////////////// #macro bit(pos,defeito) #if(defeito = 0) #if(pos=0) union{ cylinder{<0,0,0> <0,0,1> 0.15 texture{tx_plastico}} sphere{<0,0,0.25> 0.2 texture{tx_fosca}} } #else union{ cylinder{<0,0,0> <0,0,1> 0.15 texture{tx_plastico}} sphere{<0,0,0.75> 0.2 texture{tx_fosca}} } #end #else union{ cylinder{<0,0,0> <0,0,1> 0.15 texture{tx_plastico}} } #end #end #macro fileira(n,valor,prob) union{ #local aux = valor; #local i = n; #while(i > 0) #local res = mod(aux,2); #local aux = int(aux/2); #local def = (rand(roleta) < prob); object{bit(res,def) translate<0,i*0.5,0>} #local i = i - 1; #end difference{ box {<-0.25, 0, -0.25> <0.25,(n+1)*0.5, 1.25> texture{tx_plastico}} box {<-0.5, 0.25, 0> <0.5,((n+1)*0.5)-0.25, 1> texture{tx_plastico}} } } #end #macro abaco(m,n,valores,prob) union { #local i = m; #while(i > 0) object{fileira(n,valores[i-1],prob) translate<-0.09,0,i*1.2>} #local i = i - 1; #end } #end // ============================================================================================ union{ // object{ eixos(3.00) } object{ abaco(10,4,valores,0.1)} object{ abaco(4,7,valores,0) translate <0,5,0>} }