// CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_bola = texture{ pigment{ color rgb < 0, 1, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_box = texture{ pigment{ color rgb < 0, 0, 1 > } finish{ diffuse 1 ambient 0.1 } } #declare tx_boxdefeito = texture{ pigment{ color rgb < 0, 0, 0 > } finish{ diffuse 1 ambient 0.1 } } #declare tx_moldura = pigment { wood turbulence 0.05 scale <0.2, 0.2, 1> color_map { [0.1 rgb <0.42, 0.26, 0.15>] [0.9 rgb <0.52, 0.37, 0.26>] } } // ====================================================================== // DESCRIÇÃO DA CENA #declare valores = array[10] #declare valores[0] = 2; #declare valores[1] = 4; #declare valores[2] = 8; #declare valores[3] = 16; #declare valores[4] = 32; #declare valores[5] = 64; #declare valores[6] = 128; #declare valores[7] = 256; #declare valores[8] = 512; #declare valores[9] = 1024; #declare roleta = seed(115); // Partes da cena: #declare moldura_ext= box{ < 0, -13, -21 >, < 1, 20, 11> texture{ tx_moldura } } #declare moldura_int= box{ < -1, -12, -20 >, < 2, 19, 10> texture{ tx_moldura } } #macro bit(valor,defeito) #if (defeito = 0) #if (valor = 1) union{ sphere{ < -0.4, -9.65, 9.1 >, 0.8 texture{ tx_bola } } box{ < 0, -9.1, 7 >, < 0, -9.9, 10 > texture{ tx_box } } } #else union{ sphere{ < 0, -9.5, 8 >, 0.8 texture{ tx_bola } } box{ < 0, -9.1, 7.1 >, < 0, -9.9, 9.9 > texture{ tx_box } } } #end #else union{ box{ < 0, -9.1, 7.1 >, < 0, -9.9, 9.9 > texture{ tx_boxdefeito } } } #end #end #macro fileira(n,valor, prob) #local i=0; #local bit_atual = valor; union{ #while(i < n) #local def = (rand(roleta) < prob); #if ( mod(bit_atual,2) = 1) object{bit(1,def) translate <0, i*3, 0>} #else object{bit(0,def) translate <0, i*3, 0>} #end #local bit_atual = int(bit_atual/2); #local i = i + 1; #end } #end #macro abaco(m, n, valores, prob) #local i = 0; union{ #while(i < m) object{fileira(n,valores[i], prob) translate<0,0,-i*3>} #local i = i + 1; #end difference{ box{ < 0, -12, 11 >, < 1, -10+3*m, 9-3*m> texture{ tx_moldura } } box{ < -1, -11, 10 >, < 2, -11+3*m, 10-3*m> texture{ tx_moldura } } } } #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ abaco(6,6,valores, 0.4) } object{ abaco(8,8,valores, 0.8) translate<0, 23, 0> } } #include "camlight.inc" #declare centro_cena = < 0.00, 11.00, -4.00 >; #declare raio_cena = 35.0; #declare dir_camera = < 21.00, 0.00, 0.00 >; //#declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 16.0; #declare intens_luz = 2.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)