background{ color rgb < 0.75, 0.80, 0.85 > } #include "eixos.inc" #include "textures.inc" //------------------------------------- Partes da cena #declare eix = cylinder{ <0, 0, 0>, <0, 0, 0.5>, 0.08 texture{Tan_Wood} } #declare pin = torus{ 0.15, 0.08 rotate 90*x texture{Jade} } #declare valor = array[4]; #declare valor[0] = 1; #declare valor[1] = 2; #declare valor[2] = 3; #declare valor[3] = 4; #declare valor2 = array[5]; #declare valor2[0] = 10; #declare valor2[1] = 11; #declare valor2[2] = 8; #declare valor2[3] = 16; #declare valor2[4] = 3; #declare roleta = seed(417); //-------------------------------------Macros //Faz posição do pin considerando possibilidade de defeito #macro bit(pos, defeito) #if (defeito = 0) #if (pos=1) union{ object{eix} object{pin translate<0, 0, 0.375>} } #else union{ object{eix} object{pin translate<0, 0, 0.125>} } #end #else #if (pos=0) union{ object{eix} object{pin translate<0, 0, 0.375>} } #else union{ object{eix} object{pin translate<0, 0, 0.125>} } #end #end #end //Faz um numero, N bits com valor #macro fileira(n, valor, prob) union{ #local i = n; #local valtt = valor; #while(i > 0) #local valorpin = mod(valtt, 2); #local valtt = int(valtt/2); #local def = (rand(roleta) < prob); object{bit(valorpin, 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, 0.75> texture{Tan_Wood}} box {<-0.5, 0.25, 0> <0.5, ((n+1)*0.5)-0.25, 0.5>} } } #end //Faz todos números M fileiras, N bits/fileira #macro abaco(m, n, valores, prob) union{ #local j = 0; #while(j < m) object{fileira(n, valores[j], prob) translate<0, 0, j*0.75>} #local j = j + 1; #end } #end //------------------------------------Descrição object{abaco(4, 4, valor, 0.1)} object{abaco(5, 7, valor2, 0.5) translate<-0, -4.5, 0>} //Camera #include "camlight.inc" #declare centro_cena = < 0.00, -1.00, 1.00 >; #declare raio_cena = 6.0; #declare dir_camera = < 14.00, 3.00, 6.00 >; #declare dist_camera = 15.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)