// CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #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 1.0 } #declare tx_madeira = pigment { wood turbulence 0.05 scale <0.2, 0.2, 1> color_map { [0.1 rgb <0.42, 0.26, 0.15>] [0.9 rgb <0.52, 0.37, 0.26>] } } // ====================================================================== // DESCRIÇÃO DA CENA #declare NA = (sqrt(5) - 1)/2; #declare chao = box{ <-5,-5,-1>, <+5,+5,0> } #macro interpola(f0, v0, f1, v1, f) #local ss = (f - f0) / (f1 - f0); #local rr = 1 - ss; (rr * v0 + ss * v1) #end #macro interpola4(f0,v0,v1,v2,v3,t3,tt) #local v01 = interpola(f0,v0,t3,v1,tt); #local v12 = interpola(f0,v1,t3,v2,tt); #local v23 = interpola(f0,v2,t3,v3,tt); #local v012 = interpola(f0,v01,t3,v12,tt); #local v123 = interpola(f0,v12,t3,v23,tt); interpola(f0,v012,t3,v123,tt); #end #macro grafico(x0,y0,y1,y2,y3,x3,N) #local delta = (x3-x0)/N; #local i = 0; #local xx = x0; union{ #while(i < N) #local yy = interpola4(x0,y0,y1,y2,y3,x3,xx); sphere{yy , 0.2} #local i = i + 1; #local xx = xx + delta; #end } #end #macro grafico4(x0, y00, y01, y02, y10, y11, y20, y21, y30, y31, y32, x3, n) #local yy01 = (y02 + y10)/2; #local yy12 = (y11 + y20)/2; #local yy23 = (y21 + y30)/2; #local dist = (x3-x0)/4; union{ grafico(x0,y00,y01,y02,yy01,x0+dist,n) grafico(x0+dist,yy01,y10,y11,yy12,x0+2*dist,n) grafico(x0+2*dist,yy12,y20,y21,yy23,x0+3*dist,n) grafico(x0+3*dist,yy23,y30,y31,y32,x0+4*dist,n) } #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ eixos(5.00) } object{ grafico4(0,<-4,4,-2>,<-2,-3,3>,<-1,3,2>,<2,1,5>,<1,-3,-2>,<2,-3,1>,<4,-2,3>,<2,2,-1>,<-2,4,-1>,<-2,2,-3>,16,20) texture{tx_madeira}} } #include "camlight.inc" #declare centro_cena = < 0.00, 1.00, 1.00 >; //#declare centro_cena = < 0.00, (1-clock)*14+clock*7, -4.00 >; //#declare raio_cena = (1-clock)*60+clock*30; #declare raio_cena = 6; //#declare dir_camera = < 21.00, (1-clock)*40+clock*0, 0.00 >; #declare dir_camera = < 2.00, 0.00, 1.00 >; //#declare dist_camera = (1-clock)*30+clock*10; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)