// Last edited on DATE TIME by USER // Processed by remove-cam-lights 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 } #declare bola = union { sphere{ < 0,0,2 >, 0.70 texture{ tx_verde } } } #include "eixos.inc" #macro interpola1matriz(P,Q,N,c0,c1,cc,R) #local i=0; #while(i<N) #local k=0; #while(k<4) #declare R[i][k]=interpolalin(c0, P[i][k], c1, Q[i][k], cc); #local k=k+1; #end #local i=i+1; #end #end #macro interpola1matriz2(P,N,c0,c1,cc,R,k0,k1) #local i=0; #while(i<N) #local k=0; #while(k<4) #declare R[i][k]=interpolalin(c0, P[k0][i][k], c1, P[k1][i][k], cc); #local k=k+1; #end #local i=i+1; #end #end #macro noh(P,N,M) union{ #local t0=0; #local t1=M; #local i=0; #while(i<N) #local tt=t0; #while(tt<t1) object{ bola translate arcobezier(t0,t1,P[i][0],P[i][1],P[i][2],P[i][3],tt)} #local tt = tt+1; #end #local i=i+1; #end } #end #macro busca_tempo(clk, NK, tk) #for(i,0,NK-2,1) #if((tk[i]<=clk) & (clk<tk[i+1])) #local kk=i; #end #end kk #end #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) #local j = mod(i+1, N); #declare P[i][2] = P[i][3] - vv; #declare P[j][1] = P[j][0] + vv; #end #macro suavizaX(P,N,i) #local j = mod(i+1, N); #local vv = (P[j][1] - P[i][2]) / 2; suavizaZ(P,N,i,vv) #end #macro palito() union{ #declare t0=0.00; #declare t1=0.40; #declare v0=<0,0,0>; #declare v1=<0,10,0>; #declare tt=t0; #while(tt<t1) object{ bola translate interpolalin(t0,v0,t1,v1,tt)} #declare tt = tt+0.01; #end #declare v0=<0,10,0>; #declare v1=<0,10,10>; #declare tt=t0; #while(tt<t1) object{ bola translate interpolalin(t0,v0,t1,v1,tt)} #declare tt = tt+0.01; #end #declare v0=<0,10,10>; #declare v1=<0,0,10>; #declare tt=t0; #while(tt<t1) object{ bola translate interpolalin(t0,v0,t1,v1,tt)} #declare tt = tt+0.01; #end #declare v0=<0,0,10>; #declare v1=<0,0,0>; #declare tt=t0; #while(tt<t1) object{ bola translate interpolalin(t0,v0,t1,v1,tt)} #declare tt = tt+0.01; #end } #end #macro curvas() union{ #declare M=200; //num de bolinhas #declare NK = 6; //Num de quadros #declare NA = 4; //Num arcos na curva #declare P = array[NK][NA][4] #declare R=array[NA][4] #for(i,0,NA-1,1) #for(j,0,3,1) #declare R[i][j]=<0,0,0>; #end #end #declare P[0][0][0]=<0,0,0>; #declare P[0][0][1]=<0,10,0>; #declare P[0][0][2]=<0,10,5>; #declare P[0][0][3]=<0,5,7>; #declare P[0][1][0]=<0,5,7>; #declare P[0][1][1]=<-1,7,8>; #declare P[0][1][2]=<-2,3,8>; #declare P[0][1][3]=<-2,-7,10>; #declare P[0][2][0]=<-2,-7,10>; #declare P[0][2][1]=<10,7,4>; #declare P[0][2][2]=<7,7,4>; #declare P[0][2][3]=<1,10,12>; #declare P[0][3][0]=<1,10,12>; #declare P[0][3][1]=<-3,5,13>; #declare P[0][3][2]=<5,2,10>; #declare P[0][3][3]=<0,0,0>; #declare P[1][0][0]=<2,-3,0>; #declare P[1][0][1]=<6,6,3>; #declare P[1][0][2]=<7,0,5>; #declare P[1][0][3]=<0,7,3>; #declare P[1][1][0]=<0,7,3>; #declare P[1][1][1]=<-1,7,8>; #declare P[1][1][2]=<-2,3,8>; #declare P[1][1][3]=<8,-3,10>; #declare P[1][2][0]=<8,-3,10>; #declare P[1][2][1]=<10,7,4>; #declare P[1][2][2]=<7,7,4>; #declare P[1][2][3]=<-5,-7,-2>; #declare P[1][3][0]=<-5,-7,-2>; #declare P[1][3][1]=<-3,5,13>; #declare P[1][3][2]=<5,2,10>; #declare P[1][3][3]=<2,-3,0>; #declare P[2][0][0]=<3,3,3>; #declare P[2][0][1]=<0,10,0>; #declare P[2][0][2]=<0,10,5>; #declare P[2][0][3]=<-5,8,4>; #declare P[2][1][0]=<-5,8,4>; #declare P[2][1][1]=<-1,7,8>; #declare P[2][1][2]=<-2,3,8>; #declare P[2][1][3]=<-2,-7,10>; #declare P[2][2][0]=<-2,-7,10>; #declare P[2][2][1]=<10,7,4>; #declare P[2][2][2]=<7,7,4>; #declare P[2][2][3]=<-3,5,4>; #declare P[2][3][0]=<-3,5,4>; #declare P[2][3][1]=<-3,5,13>; #declare P[2][3][2]=<5,2,10>; #declare P[2][3][3]=<3,3,3>; #declare P[3][0][0]=<7,3,5>; #declare P[3][0][1]=<6,6,3>; #declare P[3][0][2]=<7,0,5>; #declare P[3][0][3]=<0,7,3>; #declare P[3][1][0]=<0,7,3>; #declare P[3][1][1]=<-1,7,8>; #declare P[3][1][2]=<-2,3,8>; #declare P[3][1][3]=<-1,3,0>; #declare P[3][2][0]=<-1,3,0>; #declare P[3][2][1]=<10,7,4>; #declare P[3][2][2]=<7,7,4>; #declare P[3][2][3]=<5,7,2>; #declare P[3][3][0]=<5,7,2>; #declare P[3][3][1]=<-3,5,13>; #declare P[3][3][2]=<5,2,10>; #declare P[3][3][3]=<7,3,5>; #declare P[4][0][0]=<-3,2,7>; #declare P[4][0][1]=<0,10,0>; #declare P[4][0][2]=<0,10,5>; #declare P[4][0][3]=<0,-5,-7>; #declare P[4][1][0]=<0,-5,-7>; #declare P[4][1][1]=<-1,7,8>; #declare P[4][1][2]=<-2,3,8>; #declare P[4][1][3]=<-2,-7,10>; #declare P[4][2][0]=<-2,-7,10>; #declare P[4][2][1]=<10,7,4>; #declare P[4][2][2]=<7,7,4>; #declare P[4][2][3]=<-1,5,6>; #declare P[4][3][0]=<1,5,6>; #declare P[4][3][1]=<-3,5,13>; #declare P[4][3][2]=<5,2,10>; #declare P[4][3][3]=<-3,2,7>; #declare P[5][0][0]=<0,0,0>; #declare P[5][0][1]=<0,10,0>; #declare P[5][0][2]=<0,10,5>; #declare P[5][0][3]=<0,5,7>; #declare P[5][1][0]=<0,5,7>; #declare P[5][1][1]=<-1,7,8>; #declare P[5][1][2]=<-2,3,8>; #declare P[5][1][3]=<-2,-7,10>; #declare P[5][2][0]=<-2,-7,10>; #declare P[5][2][1]=<10,7,4>; #declare P[5][2][2]=<7,7,4>; #declare P[5][2][3]=<1,10,12>; #declare P[5][3][0]=<1,10,12>; #declare P[5][3][1]=<-3,5,13>; #declare P[5][3][2]=<5,2,10>; #declare P[5][3][3]=<0,0,0>; #declare tk=array[NK] #declare tk[0]=0.000; #declare tk[1]=0.200; #declare tk[2]=0.400; #declare tk[3]=0.600; #declare tk[4]=0.800; #declare tk[5]=1.000; #local clk=clock; #local k=busca_tempo(clk, NK, tk); interpola1matriz2(P, NA, tk[k],tk[k+1], clk, R, k,k+1) object{ noh(R,NA,M) } } #end #macro roda(a,b,n,r) union{ #while (a<b) object { bola translate <r*sin(a), 0, r*cos(a)> } #declare a = a+1/n; #end } #end curvas() #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 7.00>; #declare raio_cena = 25.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 50*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)