background{ color rgb < 0.75, 0.80, 0.85 > } #declare peca_preta = texture{ pigment{ color rgb < 0.30, 0.30, 0.30 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare peca_branca = texture{ pigment{ color rgb < 0.90, 0.90, 0.90 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare hiperpeao = union { cone { <0,0,0>, 0.075 <0,0.075,0>, 0 } sphere { <0,0.15,0>, 0.075 } box{ <-0.075,0.225,-0.075>, <0.075,.375,0.075> } } #declare hiperdama = union { cone { <0,0.05,0>, 0.075 <0,0.2,0>, 0 } sphere { <0,0.275,0>, 0.075 } cylinder{ <0,0,0>, <0,0.05,00>, 0.15 } } #macro tabuleiro(m,n) //n par #declare raioCamada=0.5; #declare camada=1; #while (camada <= m) #declare par=mod(camada,2); #declare raio=camada*raioCamada; #declare altura=(m-camada+1)*0.01; #declare rot=par*180; object { cylinder { <0,-altura,0>, <0,altura,0>, raio texture { pigment { radial color_map{[0.5 color rgb <0,0,0>][0.5 color rgb <1,1,1>]} frequency n } } rotate z*rot } } #if(camada>1) #declare peca=0; #declare anguloDif = 2*3.141592/(2*n); #while (peca<(2*n)) #declare rpeca = raio-(raioCamada/2); #declare angulo = peca*anguloDif +anguloDif/2; #declare posx = rpeca*cos(angulo); #declare posz = rpeca*sin(angulo); object{ #if (par<1) hiperpeao #else hiperdama #end translate texture { #if(peca>=n) peca_preta #else peca_branca #end } } #declare peca=peca+1; #end #end #declare camada=camada+1; #end #end #declare fileiras = 7; #declare casas = 6; union { tabuleiro(fileiras, casas) rotate 90*y } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0>; #declare raio_cena = 0.7*fileiras; #declare dir_camera = < 0, 1, -1 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)