// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-09-30 19:57:13 by jstolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.2, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_transparente = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > transmit 0.8} finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } // ====================================================================== // DESCRI��O DA CENA #declare raio_nivel = 3; #declare peao = sphere{ < 0.00, 0.00, 0.00 >, 0.15 texture{ tx_plastico } } #declare dama = cone{ < 0, 0, 0.00 >, 0.15 < 0, 0, 0.30 >, 0.01 texture{ tx_plastico } } #declare base = cylinder{ < +0.00, -0.00, -0.00 >, < +0.00, +0.00, +0.05 >, 0.2 texture{ tx_plastico } } #declare base_nivel = cylinder{ < +0.00, -0.00, -0.00 >, < +0.00, +0.00, +0.03 >, raio_nivel texture{ tx_transparente } } #declare eixo_central = cylinder{ < +0.00, -0.00, -0.00 >, < +0.00, +0.00, 5 >, 0.05 texture{ tx_plastico } } #include "eixos.inc" // Aqui est� a cena, finalmente: #declare altura_nivel = 0.6; #declare contador_niveis = 0; #declare contador_rotacoes = 0; object {eixo_central} #macro gerar_tabuleiro(m,n) #declare angulos_entre_casas = 360/n; #while (contador_niveis < m) #while (contador_rotacoes < n) union{ union{ object{ base } // regra peao nivel 1,4,7... #if (mod(contador_niveis,3)=0) #if (mod(contador_rotacoes,2)=0) object{ peao translate <0,0,0.2>} #end #end // regra dama nivel 2,5,8... #if (mod(contador_niveis,3)=1) #if (mod(contador_rotacoes,2)=1) object{ dama translate <0,0,0.1>} #end #end // regra peoa e damas nivel 3,6,9... #if (mod(contador_niveis,3)=2) #if (mod(contador_rotacoes,2)=0) object{ peao translate <0,0,0.2>} #end #if (mod(contador_rotacoes,2)=1) object{ dama translate <0,0,0.1>} #end #end translate rotate (angulos_entre_casas * contador_rotacoes)*z } } #declare contador_rotacoes = contador_rotacoes + 1; #end #declare raio_nivel = raio_nivel*0.7; union{ object {base_nivel translate<0,0, contador_niveis*altura_nivel>} scale } #declare contador_rotacoes = 0; #declare contador_niveis = contador_niveis + 1; #end #end gerar_tabuleiro(4,5) #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 6.0; #declare dir_camera = < 14.00, 7.00, 5.00 >; #declare dist_camera = 4*raio_cena; #declare intens_luz = 2.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)