// 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 <0.80, 0.80, 0.80> } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #include "eixos.inc" #include "colors.inc" #declare dist = 2; #declare phi = (-1 + sqrt(5)) / 2; #declare tx = texture { pigment { color rgb < 0.85, 0.85, 1.00 > filter 0.2 } finish { diffuse 0.6 reflection 0.3 ambient 0.4 } }; #macro chao(distancia) object { face(z, -distancia) pigment { checker color rgb < 0, 0, 0 >, color rgb < 0.80, 0.97, 0.90 > } finish { diffuse 0.6 ambient 0.2 reflection 0.15 roughness 0.008 specular 0.80 } } #end #macro face(n, dist) object { plane { n, dist } } #end #macro octaedro(distancia) object { intersection { face(<1, 1, 1>, distancia) face(<1, 1, -1>, distancia) face(<1, -1, 1>, distancia) face(<1, -1, -1>, distancia) face(<-1, 1, 1>, distancia) face(<-1, 1, -1>, distancia) face(<-1, -1, 1>, distancia) face(<-1, -1, -1>, distancia) } texture { tx } interior { ior 1.5 } } #end #macro dodecaedro(distancia) object { intersection { face(<1, 0, phi>, distancia) face(<1, 0, -phi>, distancia) face(<-1, 0, phi>, distancia) face(<-1, 0, -phi>, distancia) face(, distancia) face(, distancia) face(<-phi, 1, 0>, distancia) face(<-phi, -1, 0>, distancia) face(<0, phi, 1>, distancia) face(<0, phi, -1>, distancia) face(<0, -phi, 1>, distancia) face(<0, -phi, -1>, distancia) } texture { tx } interior { ior 1.5 } } #end #macro icosaedro(distancia) #local proporcao = 1.06; intersection { octaedro(distancia) object { dodecaedro(distancia) scale } } #end #macro cubo(distancia) #local trans = -distancia / 2; object { box { <0, 0, 0>, } translate texture { tx } interior { ior 1.5 } } #end #macro cuboOctaedro(distancia) #local s = 1.75; intersection { object { cubo(distancia) scale } octaedro(distancia) } #end // Aqui está a cena, finalmente: union { chao(dist * 2) object { octaedro(dist) } object { dodecaedro(dist) translate <7, 4, 0> } object { icosaedro(dist) translate <-7, 0, 0> } object { cuboOctaedro(dist) translate <0, 0, 7> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 20; #declare dir_camera = < 0, 0.01, 0 >; #declare dist_camera = 15.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)