// 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.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_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 1 ambient 1 } } #declare tx_espelho = texture{ pigment{ color rgb < 0.50, 0.50, 0.50 > } finish{ diffuse 0.2 reflection 0.7*< 0.50, 0.50, 0.50 > ambient 0.1 } } #declare tx_vidro2 = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.75, 0.15, 0.15 > filter 0.80 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } #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 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } // ====================================================================== // DESCRIÇÃO DA CENA #declare raio = 2.000; #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } // Partes da cena: #declare phi = (sqrt(5)+1)/2; #declare ponto = sphere{ <0,0,0>, 0.1 } #macro interpola(t0,v0,t1,v1,tt) #local ss= (tt-t0)/(t1-t0); #local rr= 1-ss; (rr*v0 + ss*v1) #end #macro interpola4(t0,v0,v1,v2,v3,t1,tt) #local v01=interpola(t0,v0,t1,v1,tt); #local v12=interpola(t0,v1,t1,v2,tt); #local v23=interpola(t0,v2,t1,v3,tt); #local v012=interpola(t0,v01,t1,v12,tt); #local v123=interpola(t0,v12,t1,v23,tt); #local v0123=interpola(t0,v012,t1,v123,tt); v0123 #end #macro pto_grafico(pto) object{ ponto translate pto } #end #macro grafico(t0,v0,v1,v2,v3,t3,N) union{ #local intervalo = (t3-t0)/N; #local t_atual = t0; #while(t_atual <= t3) #local v_atual=interpola4(t0,v0,v1,v2,v3,t3,t_atual); object{ pto_grafico(v_atual) } #local t_atual = t_atual + intervalo; #end } #end #macro emenda_graf(v01,v02,v11,v12,v21,v22,v31,v32,N) union{ object { grafico(0,(v01+v32)/2,v01,v02,(v02+v11)/2,3,N) pigment{ color rgb < 0.10, 0.80, 1.00 > } } object { grafico(3,(v02+v11)/2,v11,v12,(v12+v21)/2,6,N) pigment{ color rgb < .80, 0.10, .10 > } } object { grafico(6,(v12+v21)/2,v21,v22,(v22+v31)/2,9,N) pigment{ color rgb < 0.10, 0.80, 1.00 > } } object { grafico(9,(v22+v31)/2,v31,v32,(v01+v32)/2,12,N) pigment{ color rgb < 0.80, 0.10, 0.10 > } } } #end #macro emenda_ret(p21,p22,p23,p24,p31,p32,p33,p34,p41,p42,p43,p44, q11,q12,q13,q14,q21,q22,q23,q24,q31,q32,q33,q34, radp,txgp,txrp, radq,txgq,txrq) union{ object{retalho(p21+q31/2,p22+q32/2,p23+q33/2,p21+q34/2,p21,p22,p23,p24,p31,p32,p33,p34,p41,p42,p43,p44,radp,txgp,txrp)} object{retalho(q11,q12,q13,q14,q21,q22,q23,q24,q31,q32,q33,q34,p21+q31/2,p22+q32/2,p23+q33/2,p21+q34/2,radq,txgq,txrq)} } #end #include "eixos.inc" #include "retalho.inc" // cena union{ object { emenda_graf(<0,0,0>,<0,1,0>,<0,2,0>,<0,3,0>,<0,4,0>,<1,4,0>,<1,3,0>,<1,2,1>,1000) scale .70 translate<0,5,2>} object{emenda_ret (<0,0,0>,<0,1,0>,<0,2,0>,<0,3,0>,<0,4,0>,<0,4,1>,<0,3,1>,<0,2,1>,<0,1,1>,<1,1,1>,<1,0,1>,<1,0,0>, <3,0,0>,<4,0,0>,<5,0,0>,<5,0,1>,<5,0,2>,<4,0,2>,<4,0,1>,<4,1,1>,<4,2,1>,<5,2,1>,<5,3,1>,<5,4,1>, 0.01,tx_fosca,tx_plastico,0.01,tx_plastico,tx_fosca) scale 0.7} //object{ eixos(3) } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 6; //#declare dir_camera = < (1-clock)*12 + clock*17, 3.00, 8.00 >; #declare dir_camera = < 4.00, 7.00, 4.00 >; #declare dist_camera = 100.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)