// CORES E TEXTURAS #include "colors.inc" #include "textures.inc" background{ color Quartz } // DESCRICAO DA CENA #declare roleta = seed(417); #declare tx_xadrez = texture{ pigment{ checker color SkyBlue, color NeonBlue } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #macro moldura1(m,n) box{ <0.5,-0.5,-0.3> <-(m+0.5),(n+0.5),0> pigment{ Tan } } #end #macro moldura2(m,n) box{ <1,-1,-0.8> <-(m+1),(n+1),-0.28> pigment{ DarkTan } } #end #macro Moldura(m,n) union{ object{ moldura1(m,n) } object{ moldura2(m,n) } } #end #declare botao_pressed = union{ cylinder{ <0,0,0>, <0,0,0.8>, 0.35 pigment{ Red } } sphere{ <0,0,0> 0.45 pigment{ Gray } } } #macro botao_pulled(valor) union{ cylinder{ <0,0,0>, <0,0,(2.0 - 1.2*valor)>, 0.35 pigment{ Scarlet } } sphere{ <0,0,0> 0.45 pigment{ Gray } } } #end #declare botao_erro = union{ cylinder{ <0,0,0>, <0,0,0.40>, 0.35 pigment{ Yellow } } sphere{ <0,0,0> 0.45 pigment{ Gray } } } #declare valores = array[10]; #declare valores[0] = 2.9; #declare valores[1] = 4.2; #declare valores[2] = 6.4; #declare valores[3] = 8.8; #declare valores[4] = 10; #declare valores[5] = 12.1; #declare valores[6] = 14.3; #declare valores[7] = 16.5; #declare valores[8] = 18.7; #declare valores[9] = (1-clock)*8 + clock*10.1; #macro bit(valor, def) #if (def > 0) object{ botao_erro } #else #if (valor = 1) object{ botao_pressed } #else object{ botao_pulled(valor) } #end #end #end #macro fileira(n, valor, prob) #local j = n-1; #local valor_aux = valor; #local r = int(valor_aux); #local f = valor_aux - r; union{ #while(j >= 0) #local def = (rand(roleta) < prob); #local vb = mod(r,2); #if (vb = 0) object{ bit(f, def) translate <-j,0,0> } #local f = 0; #else object{ bit((1-f), def) translate <-j,0,0> } #end #local r = int(r/2); #local j = j - 1; #end } #end #macro abaco(m, n, valor, prob) #local i = 0; union{ #while(i < m) object{ fileira(n, valor[i], prob) translate<0,i,0> } #local i = i + 1; #end object{ Moldura(n, m) translate<0.5,-0.5,0> } } #end // CENA union { object{ chao translate < 0,0,-5 > texture{ tx_xadrez } } object{ abaco(10,6,valores, 0.10) translate <10,-4,0> } object{ abaco(10,10,valores, 0.0) translate <-3,-4,0> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 20.0; #declare dir_camera = <0.00, 10.01, 10.00 >; #declare dist_camera = 10*(1-clock) + 20*clock ; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)