// 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 #include "retalho.inc" #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 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; #declare pda =(pd3+pa2)/2; #declare m11 = <0,-10,2>; #declare m12 = <-2,-9,3>; #declare m13 = <-2,-8,4>; #declare m14 = <0,-7,5>; #declare m21 = <0,-6,1>; #declare m22 = <-4,-5,3>; #declare m23 = <-4,-4,5>; #declare m24 = <0,-3,7>; #declare m31 = <0,-2,0>; #declare m32 = <-4,-1,2>; #declare m33 = <-4,0,4>; #declare m34 = <0,1,8>; #declare n21 = <0,2,0>; #declare n22 = <-4,3,2>; #declare n23 = <-4,4,4>; #declare n24 = <0,5,8>; #declare mn1 = (m31+n21)/2; #declare mn2 = (m32+n22)/2; #declare mn3 = (m33+n23)/2; #declare mn4 = (m34+n24)/2; #declare n31 = <0,6,1>; #declare n32 = <-4,7,3>; #declare n33 = <-4,8,5>; #declare n34 = <0,9,7>; #declare n41 = <0,10,2>; #declare n42 = <-2,11,3>; #declare n43 = <-2,12,4>; #declare n44 = <0,13,5>; // Aqui está a cena, finalmente: union{ object { eixos(10)} //object { chao translate<0,0,2>} object { grafico(-20,-10,pda,pa2,pa3,pab,40) scale 0.2} object { grafico(-10,0,pab,pb2,pb3,pbc,40) scale 0.2} object { grafico(0,10,pbc,pc2,pc3,pcd,40) scale 0.2} object { grafico(10,20,pcd,pd2,pd3,pda,40) scale 0.2} object { retalho(m11,m12,m13,m14,m21,m22,m23,m24,m31,m32,m33,m34,mn1,mn2,mn3,mn4,0,tx_vidro,tx_azul)} object { retalho(mn1,mn2,mn3,mn4,n21,n22,n23,n24,n31,n32,n33,n34,n41,n42,n43,n44,0,tx_vidro,tx_plastico)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 25.0; #declare dir_camera = < 5,3,5 >; #declare dist_camera = 20.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)