//NOME: Plinio A. S. Freire ra082505 // ============================================================================================ #include "eixos.inc" #include "colors.inc" #include "textures.inc" //camera e luz #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 20.0; #declare dir_camera = <1, 0, 20 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz) #declare fi = (sqrt(5)-1)/2; // 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 } #declare tx_red = texture{ pigment{ color rgb <1, 0, 0 >} finish{ diffuse 0.9 ambient 0.1 } } #declare tx_green = texture{ pigment{ color rgb <0, 1, 0>} finish{ diffuse 0.9 ambient 0.1 } } #declare tx_blue = texture{ pigment{ color rgb <0, 0, 1>} finish{ diffuse 0.9 ambient 0.1 } } #declare tx_marrom = texture{ pigment{ color rgb <0.8,0.6,0.3>} } //macro #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); #local v0123 = interpola(t0, v012, t3, v123, tt); v0123; #end #macro grafico(x0, y0, y1, y2, y3, x3, N) union{ #local xx = x0; #while(xx <= x3) #local yy = interpola4(x0, y0, y1, y2, y3, x3, xx) sphere{, 0.15} #local xx = xx + (x3 - x0)/N; #end } #end #macro graficos(xi, yi, y10, y11, y20, y21, y30, y31, y40, y41, yf,xf, N) union { #local xa0 = (xf - xi)/4; #local y1 = (y11 + y20)/2; object{grafico(xi,yi,y10,y11,y1,xi+xa0,N/4)} #local y2 = (y21 + y30)/2; #local xa1 = xi+xa0; object{grafico(xa1,y1,y20,y21,y2,xa1+xa0,N/4)} #local y3 = (y31 + y40)/2; #local xa2 = xa1 + xa0; object{grafico(xa2,y2,y30,y31,y3,xa2+xa0,N/4)} object{grafico(xa2+xa0,y3,y40,y41,yf,xf,N/4)} } #end // ============================================================================================ union{ object{eixos(3)} object{graficos(0,1,-5,2,-3,7,-8,3,-6,4,-9,4,100)} }