// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2019-29-03 17:48:09 by Luis Gustavo // ====================================================================== // 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_vermelho = texture{ pigment{ color rgb < 0.80, 0.10, 0.10 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_pink = texture{ pigment{ color rgb < 0.98, 0.05, 0.75 > } finish{ diffuse 0.8 ambient 0.2 specular 0.5 roughness 0.005 } } #declare tx_orange = texture{ pigment{ color rgb < 0.98, 0.20, 0.20 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.05 } } #declare tx_verde = texture{ pigment{ color rgb < 0.20, 0.90, 0.10 > } 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_xadrez = texture{ pigment{ checker color rgb < 0.00, 0.0, 0.00 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare bola = union { sphere{ < 0,0,2 >, 0.70 texture{ tx_verde } } } #include "eixos.inc" // Aqui está a cena, finalmente: #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 suavizaZ(P,N,i,vv) //suaviza a junta entre o arco //i e o arco j=mod(i+1,N) #local j = mod(i+1, N); //#local vv = (P[j][1] - P[i][2]) / 2; #declare P[i][2] = P[i][3] - vv; #declare P[j][1] = P[j][0] + vv; #end #macro suavizaX(P,N,i) //suaviza a junta entre o arco //i e o arco j=mod(i+1,N) #local j = mod(i+1, N); #local vv = (P[j][1] - P[i][2]) / 2; suavizaZ(P,N,i,vv) #end #macro curvas() union{ #declare N=4; #declare P=array[N][4] #declare t0=0.000; #declare t1=0.999; //Arco 0 #declare P[0][0]=<2,-3,0>; #declare P[0][1]=<0,10,0>; #declare P[0][2]=<0,10,5>; #declare P[0][3]=<0,5,7>; //Arco 2 #declare P[1][0]=<0,5,7>; #declare P[1][1]=<-1,7,8>; #declare P[1][2]=<-2,3,8>; #declare P[1][3]=<-2,-7,10>; //Arco 3 #declare P[2][0]=<-2,-7,10>; #declare P[2][1]=<10,7,4>; #declare P[2][2]=<7,7,4>; #declare P[2][3]=<1,10,12>; //Arco 4 #declare P[3][0]=<1,10,12>; #declare P[3][1]=<-3,5,13>; #declare P[3][2]=<5,2,10>; #declare P[3][3]=<2,-3,0>; #declare j=0; #while(j; #declare v1=<0,10,0>; #declare tt=t0; #while(tt; #declare v1=<0,10,10>; #declare tt=t0; #while(tt; #declare v1=<0,0,10>; #declare tt=t0; #while(tt; #declare v1=<0,0,0>; #declare tt=t0; #while(tt } #declare a = a+1/n; #end } #end //object{palito()} object{curvas()} object{ eixos(15.00) } #include "camlight.inc" #declare centro_cena = < 10.00, +10.00, 10.00>; #declare raio_cena = 30.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 30*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)