// ====================================================================== // CORES E TEXTURAS #include "textures.inc" #include "debug.inc" background{ color rgb < 0.75, 0.80, 0.85 > } // ====================================================================== // DESCRIÇÃO DA CENA #declare tam_bit =<2,1,2>; #declare tam_borda = 0.3; #declare random_seed = seed (1153); #macro random() rand(random_seed) #end #macro make_bit(bitval, errado) cylinder { < 0, 0, 0> 0.1*tam_bit.y texture { Chrome_Metal } } sphere { <0,0,0> 0.45*tam_bit.y #if (errado) scale<.5,1,1> translate<.5*tam_bit.x, 0, 0> #else #if (bitval = 0) translate<.25*tam_bit.x, 0, 0> #else translate<.75*tam_bit.x, 0, 0> #end #end #if ( errado ) texture { Rusty_Iron } #else texture { Jade } #end } #end #macro make_col(nrows, number, prob_erro_bit) #local row=0; #local _number=number; #while (row } #local _number=int(_number/2); #local row=row+1; #end #end #macro make_cols(ncols, nrows, numbers, prob_erro_bit) #local col=0; #while (col } #local col=col+1; #end #end #macro abaco(numbers, prob_defeito_bit) #local ncols = dimension_size(numbers, 1); #local maxNum=1; #local i=0; #while (i 0) #local nrows=nrows+1; #local maxNum=int(maxNum/2); #end #local largura_total = ncols *tam_bit.x + (ncols+1)*tam_borda; #local altura_total = nrows*tam_bit.y + 2*tam_borda; union { //Ábaco //Cria a borda, com os "furos" em cada fileira =================================== difference { //Caixa principal box { < 0, 0, -tam_bit.z/2> texture { Cherry_Wood } } //Buracos #local col=0; #while (col texture { Cherry_Wood } translate } #local col=col+1; #end } //Cria as bolinhas =================================== union { make_cols( ncols, nrows, numbers, prob_defeito_bit ) translate } translate <-largura_total/2, -altura_total/2, 0> scale<-1,1,1> } #end #declare Digits = array[6] {18,27,16,37,0,31}; object { abaco(Digits, 0.2) translate <0, -3.5, 0> } object { abaco(Digits, 0.1) translate <0, +3.5, 0> } //Cria os bits #include "camlight.inc" #declare centro_cena = <0,0,0>; #declare raio_cena = 12; #declare dir_camera = < 0, .1, 1 >; #declare dist_camera = 50.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)