// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 1.0, 1.0, 1.0 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.50, 0.50, 0.50 > } finish{ diffuse 0.8 ambient 0.1 specular 5.8 roughness 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.1 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.42, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #macro m1(n,m) #declare = box { <-0.6, -n, -m >, <-0.1, n, m > texture {tx_plastico} } #end #declare c1 = cylinder { <0, -0.4, 0>, <0, 0.4, 0>, 0.2 } #declare c2 = cylinder{ < 0, 0, -0.4 >, < 0, 0, 0.4 >, 0.2 texture { pigment {color rgb <0.64, 0.16, 0.16> } } } #declare bit0 = union { object { c1 } object { c2 translate <0, 0, 0.4> } } #macro bit(vlr, def) #if(def = 1) object { bit0 rotate 90*y } #else #if(vlr = 1) object { bit0 } #else object { bit0 rotate 180*y } #end #end #end #macro fileira(n, num, prob) #local i = 0; #local def = 0; union { #while(i < n) #local def = (rand(roleta) < prob); #if(mod(num,2)) object { bit(1,def) translate <0, -i*2, 0> } #else object { bit(0,def) translate <0, -i*2, 0> } #end #local num = int(num/2); #local i = i + 1; #end } #end #declare nums = array[10]; #declare nums[0] = 0; #declare nums[1] = 0; #declare nums[2] = 0; #declare nums[3] = 0; #declare nums[4] = 0; #declare nums[5] = 0; #declare nums[6] = 0; #declare nums[7] = 0; #declare nums[8] = 1; #declare nums[9] = 1; #declare roleta = seed(417); #macro abaco(m, n, nums, prob) #local i = 0; union { object { box { <-0.6, 1, 1>, <-0.1, -n*2, -m*2> texture {tx_plastico} } } #while(i < m) object { fileira(n, nums[i], prob) translate<0, 0, -i*2> } #local i = i + 1; #end } #end union { object { abaco(10, 10, nums, 0.2) translate <-3, -6, 0> } object { abaco(6, 4, nums, 0.2) translate <3, 5, 0>} } #include "camlight.inc" #declare centro_cena = < 0.00, -6.00, -5.00 >; #declare raio_cena = 25.0; #declare dir_camera = < 14.00, 0.00, 0.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)