// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2017-05-07 20:10:09 by stolfilocal // ====================================================================== // 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 0.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 } } #declare tx_vidro = 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_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 // Partes da cena: #declare cx = 0; #declare cz = 0; #declare cy = 0; //Acredito que sera mais facil utilizar funcoes seno e cosseno para fazer o circulo. //Preciso fazer isso antes da proxima aula. #macro interpolaLin (t0, v0, t1, v1, tt) #local r = (tt-t0)/(t1-t0); #local s = 1-r; #local vv = s*v0 + r*v1; vv #end #macro arcobezier (t0, t1, A, B, C, D, tt) #local AB = interpolaLin(t0,A,t1,B,tt); #local BC = interpolaLin(t0,B,t1,C,tt); #local CD = interpolaLin(t0,C,t1,D,tt); #local ABC = interpolaLin(t0,AB,t1,BC,tt); #local BCD = interpolaLin(t0,BC,t1,CD,tt); #local ABCD = interpolaLin(t0,ABC,t1,BCD,tt); ABCD #end #macro c (P, R) #declare cy = sqrt(pow(R, 2) - pow(cx, 2)); #declare cz = 0; #end //0,0,0 200,0,0 #macro poligono (N) #local ini = <0.0, 0.0, 0.0>; #local tt = 0; #local ii = 1/N; #local AD = <0,0,0>; #local A2 = <100,200,0>; #local A3 = <300,-200,0>; #local AB = <400,0,0>; #local B2 = <500,200,0>; #local B3 = <300,200,0>; #local BC = <400,400,0>; #local C2 = <500,600,0>; #local C3 = <150,300,0>; #local CD = <000,400,0>; #local D2 = <-150,500,0>; #local D3 = <-100,-200,0>; #while (tt < 1) //object {sphere {interpolaLin(0.00, <000,000,000>, 0.80, <200,000,000>, tt), 20.00 texture{tx_fosca}}} //object {sphere {interpolaLin(0.00, <200,000,000>, 0.80, <200,200,000>, tt), 20.00 texture{tx_fosca}}} object {sphere {arcobezier(0.0, 1.0, AD, A2, A3, AB,tt), 20.00 texture{tx_fosca}}} object {sphere {arcobezier(0.0, 1.0, AB, B2, B3, BC,tt), 20.00 texture{tx_fosca}}} object {sphere {arcobezier(0.0, 1.0, BC, C2, C3, CD,tt), 20.00 texture{tx_fosca}}} object {sphere {arcobezier(0.0, 1.0, CD, D2, D3, AD,tt), 20.00 texture{tx_fosca}}} #local tt = tt + ii; #end #end poligono(1000) #macro circulo (R, N) #declare centro = <0.0, 0.0, 0.0>; #declare nX = N/2; #declare d = 2*R/nX; #declare cx = -R; #while (cx, 20.00 texture{tx_fosca}}} object {sphere {, 20.00 texture{tx_fosca}}} #declare cx = cx + d; #end #end // tive algum problema na etapa3 que ainda nao sei qual e /* #macro etapa3(N) #declare tt = 0; #declare i = 0.125; #declare np = N/8; #declare cx = 0.0; #declare cy = 0.0; #declare cz = 0.0; #while(tt < 1) #if (tt=0.00) #declare aux = 0; #while(aux < np) object {sphere {, 20.00 texture{tx_fosca}}} #declare cx = cx + 5; #declare np = np +1; #end #end #if (tt=1.25) #aux = cx; #while(cx < aux+100) c(cx, 100) object {sphere {, 20.00 texture{tx_fosca}}} #declare cx = cx +100/np; #end #end #declare tt = tt + i; #end #end etapa3(400) */ //circulo (300, 1000) #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 850; #declare dir_camera = < 10.00, 10.00, 10.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)