// Last edited on DATE TIME by USER // Processed by remove-cam-lights #declare R1 = seed(061485); #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 } background { color rgb < 0.75, 0.80, 0.85 > } #declare chao = box { <-20, -20, 0>, <20, 20, 0> } #macro bit(set, defeito) union { #local tz = 0.2 + (0.8 - 0.2) * set; sphere { <0, 0, 0> 0.2 translate z*tz } cylinder { <0, 0, 0>, <0, 0, 1>, 0.05 pigment { color rgb <0.7, 0.7, 0.7> } } #if (defeito = 1) rotate <80, 0, int(rand(R1)*360)> #end } #end #declare S = 1; // Espacamento entre bits #macro numero(n, N, prob) union { #local i = 0; #local nn = int(n); // Parte inteira #local ff = n - nn; // Parte fracionaria #while (i < N) #local r = nn - int(nn / 2)*2; #local nn = int(nn / 2); #if (rand(R1) < prob) #local defeito = 1; #else #local defeito = 0; #end #if (r = 0) object { bit(ff, defeito) translate } #local ff = 0; #else object { bit(1-ff, defeito) translate } #end #local i = i+1; #end } #end #macro moldura(N) difference { #local p = 0.5; // tamanho da borda #local m = 2.0; // tamanho da margem #local l = (N-1)*S + m; // tamanho da moldura box { <0, 0, 0>, } box { , } pigment { color rgb <0.8, 0.8, 0.8> } translate <-m/2, -m/2, 0> } #end #macro abaco(m, n, valores, prob) union { object { moldura(n) } #local i = 0; #while (i < m) object { numero(valores[i], n, prob) translate <0, i*S, 0> #if (i - int(i/2)*2 = 0) pigment { color rgb <1, 0, 0> } #else pigment { color rgb <0, 0, 1> } #end } #local i = i+1; #end #local tt = (n-1)*S/2; translate <-tt, -tt, 0> } #end #declare vini = array[10]; #declare vend = array[10]; #declare vini[0] = 0; #declare vend[0] = 10; #declare vini[1] = 1; #declare vend[1] = 11; #declare vini[2] = 2; #declare vend[2] = 12; #declare vini[3] = 3; #declare vend[3] = 13; #declare vini[4] = 4; #declare vend[4] = 14; #declare vini[5] = 5; #declare vend[5] = 15; #declare vini[6] = 6; #declare vend[6] = 16; #declare vini[7] = 7; #declare vend[7] = 17; #declare vini[8] = 8; #declare vend[8] = 18; #declare vini[9] = 9; #declare vend[9] = 19; #declare valores = array[10]; #declare valores[0] = vini[0]*(1-clock) + vend[0]*clock; #declare valores[1] = vini[1]*(1-clock) + vend[1]*clock; #declare valores[2] = vini[2]*(1-clock) + vend[2]*clock; #declare valores[3] = vini[3]*(1-clock) + vend[3]*clock; #declare valores[4] = vini[4]*(1-clock) + vend[4]*clock; #declare valores[5] = vini[5]*(1-clock) + vend[5]*clock; #declare valores[6] = vini[6]*(1-clock) + vend[6]*clock; #declare valores[7] = vini[7]*(1-clock) + vend[7]*clock; #declare valores[8] = vini[8]*(1-clock) + vend[8]*clock; #declare valores[9] = vini[9]*(1-clock) + vend[9]*clock; union { object { abaco(10, 10, valores, 0.3) rotate z*40.37 } scale 0.8 } #local camd = sin(clock * 3.14159); #local camx = camd*cos(clock * 3.14159) + 1; #local camy = camd*sin(clock * 3.14159) + 1; #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 6.0; #declare dir_camera = ; #declare dist_camera = 140.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)