// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS #include "textures.inc" background{ color rgb < 0.75, 0.80, 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_vidro = texture{ pigment{color rgb<0,1,1> filter 0.9} finish { diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005} } #declare tx_branco= texture{ pigment {color rgb<1,1,1> } finish { ambient 0.5}} #declare tx_azul= texture{ pigment {color rgb<0,0,1>}} #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } // ====================================================================== // DESCRIÇÃO DA CENA #declare chao = box{ <-20,-20,-1>, <+20,+20,0> texture { tx_branco } } #macro interpol(ta,va,tb,vb,tt) #local s = (tt-ta)/(tb-ta); ((1-s)*va+s*vb); #end #macro interpola4(ta,va,vb,vc,vd,tb,tt) #local vab = interpol(ta,va,tb,vb,tt); #local vbc = interpol(ta,vb,tb,vc,tt); #local vcd = interpol(ta,vc,tb,vd,tt); #local vabc = interpol(ta,vab,tb,vbc,tt); #local vbcd = interpol(ta,vbc,tb,vcd,tt); #local vabcd = interpol(ta,vabc,tb,vbcd,tt); (vabcd) #end #declare ponto= union{ sphere{ <0,0,0>,1 } texture { tx_azul } } #macro grafico(x0,x3,y0,y1,y2,y3,n) union{ #local passo = (x3-x0)/n; #local i = x0; #while(i } object {ponto translate yy} #local i = i + passo; #end } #end #include "eixos.inc" #declare a1 = 1; #declare a2 = -5; #declare a3 = -10; #declare b2 = 3; #declare b3 = 7; #declare c2 = 3; #declare c3 = 7; #declare d2 = -2; #declare d3 = 15; #declare d4 = -13; #declare ab =(a3+b2)/2; #declare bc =(b3+c2)/2; #declare cd =(c3+d2)/2; #declare pa1 = <1,-20,5>; #declare pa2 = <-5,-16,-2>; #declare pa3 = <-10,-12,3>; #declare pb2 = <3,-8,6>; #declare pb3 = <7,-4,-15>; #declare pc2 = <3,4,4>; #declare pc3 = <7,8,8>; #declare pd2 = <-2,12,9>; #declare pd3 = <15,16,-13>; #declare pd4 = <-13,20,6>; #declare pab =(pa3+pb2)/2; #declare pbc =(pb3+pc2)/2; #declare pcd =(pc3+pd2)/2; // Aqui está a cena, finalmente: union{ object { eixos(10)} //object { chao translate<0,0,2>} object { grafico(-20,-10,pa1,pa2,pa3,pab,20) scale 0.2} object { grafico(-10,0,pab,pb2,pb3,pbc,20) scale 0.2} object { grafico(0,10,pbc,pc2,pc3,pcd,20) scale 0.2} object { grafico(10,20,pcd,pd2,pd3,pd4,20) scale 0.2} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 20.0; #declare dir_camera = < 0.00001,5,5 >; #declare dist_camera = 15.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)