// Last edited on DATE TIME by USER // Processed by remove-cam-lights #include "textures.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_chao = texture{ pigment{ color rgb < 0.00, 0.70, 0.00 > } scale 2.0 } #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_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_prateado = texture{ pigment{ color rgb < 0.30, 0.30, 0.30 > } finish{ diffuse 0.2 reflection 0.6 brilliance 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 } #declare raio = 2.000; #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #declare graphs = array[4]; #declare graphs[0] = array[2]; #declare graphs[1] = array[2]; #declare graphs[2] = array[2]; #declare graphs[3] = array[2]; #declare graphs[0][0] = 2; #declare graphs[0][1] = 1; #declare graphs[1][0] = 3; #declare graphs[1][1] = 2; #declare graphs[2][0] = -2; #declare graphs[2][1] = 1; #declare graphs[3][0] = 0; #declare graphs[3][1] = 2; #declare graphs1 = array[4]; #declare graphs1[0] = array[2]; #declare graphs1[1] = array[2]; #declare graphs1[2] = array[2]; #declare graphs1[3] = array[2]; #declare graphs1[0][0] = 2*<1,2,2>; #declare graphs1[0][1] = 2*<-3,2,2>; #declare graphs1[1][0] = 2*<2,-2,2>; #declare graphs1[1][1] = 2*<1,2,-2>; #declare graphs1[2][0] = 2*<3,2,2>; #declare graphs1[2][1] = 2*<1,2,5>; #declare graphs1[3][0] = 2*<3,7,2>; #declare graphs1[3][1] = 2*<3,3,2>; #declare curva1 = array[16]; #declare curva1[0] = <1,-5,4>; #declare curva1[1] = <2,-5,4>; #declare curva1[2] = <3,-5,4>; #declare curva1[3] = <4,-5,4>; #declare curva1[4] = <1,-4,2>; #declare curva1[5] = <2,-4,2>; #declare curva1[6] = <3,-4,2>; #declare curva1[7] = <4,-4,2>; #declare curva1[8] = <1,-3,3>; #declare curva1[9] = <2,-3,3>; #declare curva1[10] = <3,-3,3>; #declare curva1[11] = <4,-3,3>; //d #declare curva1[12] = <0,4,5>; #declare curva1[13] = <2,4,2.5>; #declare curva1[14] = <3,4,3>; #declare curva1[15] = <3,4,3>; #declare curva2 = array[16]; #declare curva2[0] = <1,-2,4>; #declare curva2[1] = <2,-2,4>; #declare curva2[2] = <3,-2,4>; #declare curva2[3] = <4,-2,4>; #declare curva2[4] = <1,-1,3>; #declare curva2[5] = <2,-1,3>; #declare curva2[6] = <3,-1,3>; #declare curva2[7] = <4,-1,3>; #declare curva2[8] = <1,0,2>; #declare curva2[9] = <2,0,2>; #declare curva2[10] = <3,0,2>; #declare curva2[11] = <4,0,2>; //d #declare curva2[12] = <0,4,5>; #declare curva2[13] = <2,4,2.5>; #declare curva2[14] = <3,4,3>; #declare curva2[15] = <3,4,3>; #declare curva3 = array[16]; #declare curva3[0] = <1,1,1>; #declare curva3[1] = <2,1,1>; #declare curva3[2] = <3,1,1>; #declare curva3[3] = <4,1,1>; #declare curva3[4] = <1,2,2>; #declare curva3[5] = <2,2,2>; #declare curva3[6] = <3,2,2>; #declare curva3[7] = <4,2,2>; #declare curva3[8] = <1,3,3>; #declare curva3[9] = <2,3,3>; #declare curva3[10] = <3,3,3>; #declare curva3[11] = <4,3,3>; //d #declare curva3[12] = <1,4,2>; #declare curva3[13] = <2,4,2>; #declare curva3[14] = <3,4,2>; #declare curva3[15] = <4,4,2>; #macro interpola(f0,v0,f1,v1,f) #local ss = (f - f0) / (f1 - f0); #local rr = 1 - ss; (rr * v0 + ss * v1) #end #macro interpola4(t0,v0,v1,v2,v3,t3,tt) #local v01 = interpola(t0,v0,t3,v1,tt); #local v12 = interpola(t0,v1,t3,v2,tt); #local v23 = interpola(t0,v2,t3,v3,tt); #local v012 = interpola(t0,v01,t3,v12,tt); #local v123 = interpola(t0,v12,t3,v23,tt); interpola(t0,v012,t3,v123,tt); #end #macro grafico2(x0,y0,y1,y2,y3,x3,N,fase) #local yy = interpola4(x0,y0,y1,y2,y3,x3,fase); object{ sphere { yy, 0.25 } texture { tx_vermelho }} #end #macro graficoTotal2(x0,y0,y3,x3,N,Npontos,fase) #local delta = (x3-x0)/N; #local p1 = (graphs1[0][1] + graphs1[1][0])/2; #local p2 = (graphs1[1][1] + graphs1[2][0])/2; #local p3 = (graphs1[2][1] + graphs1[3][0])/2; #local p4 = (graphs1[3][1] + graphs1[0][0])/2; #if (fase < 0.25) grafico2(x0,p4,graphs1[0][0],graphs1[0][1],p1,x0+delta,Npontos,fase) #end #if ((fase > 0.25) & (fase <= 0.50)) grafico2(x0+delta,p1,graphs1[1][0],graphs1[1][1],p2,x0+2*delta,Npontos,fase) #end #if ((fase > 0.50) & (fase <= 0.75)) grafico2(x0+2*delta,p2,graphs1[2][0],graphs1[2][1],p3,x0+3*delta,Npontos,fase) #end #if (fase > 0.75) grafico2(x0+3*delta,p3,graphs1[3][0],graphs1[3][1],p4,x3,Npontos,fase) #end #end #macro grafico(x0,y0,y1,y2,y3,x3,N) #local delta = (x3-x0)/N; #local i = 0; #local xx = x0; #while(i < N) #local yy = interpola4(x0,y0,y1,y2,y3,x3,xx); object{ sphere { yy, 0.10 } texture { tx_plastico }} #local xx = xx + delta; #local i = i + 1; #end #end #macro graficoTotal(x0,y0,y3,x3,N,Npontos) #local delta = (x3-x0)/N; #local p1 = (graphs1[0][1] + graphs1[1][0])/2; #local p2 = (graphs1[1][1] + graphs1[2][0])/2; #local p3 = (graphs1[2][1] + graphs1[3][0])/2; #local p4 = (graphs1[3][1] + graphs1[0][0])/2; grafico(x0,p4,graphs1[0][0],graphs1[0][1],p1,x0+delta,Npontos) grafico(x0+delta,p1,graphs1[1][0],graphs1[1][1],p2,x0+2*delta,Npontos) grafico(x0+2*delta,p2,graphs1[2][0],graphs1[2][1],p3,x0+3*delta,Npontos) grafico(x0+3*delta,p3,graphs1[3][0],graphs1[3][1],p4,x3,Npontos) #end #include "eixos.inc" #include "retalho.inc" union{ union { graficoTotal(0,<2,2,2>,<3,4,3>,1,4,100) translate <0,-5,3> } union { graficoTotal2(0,<2,2,2>,<3,4,3>,1,4,100,clock) translate <0,-5,3> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 15; #declare dir_camera = < 10.00, 0.00, 35.00>; #declare dist_camera = 16; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)