// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 1.0, 1.0, 1.0 > } #declare tx_plastico1 = texture{ pigment{ color rgb < 0.20, 0.70, 0.10 > } finish{ diffuse 0.8 ambient 0.1 } } #declare tx_plastico2 = texture{ pigment{ color rgb < 0.20, 0.00, 0.90 > } finish{ diffuse 0.8 ambient 0.1 } } #declare tx_plastico3 = texture{ pigment{ color rgb < 0.90, 0.00, 0.20 > } finish{ diffuse 0.8 ambient 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.1, 0.95, 0.20 > filter 0.85 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.1 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.42, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #include "retalho.inc" #declare num = array[10]; #declare num[1] = <2, 0, 3>; #declare num[2] = <-3, -6, -7>; #declare num[3] = <1, 2, -6>; #declare num[4] = <-7, 1, 3>; #declare num[5] = <1, 2, 3>; #declare num[6] = <2, 2, 3>; #declare num[7] = <-4, 0, 2>; #declare num[8] = <2, 3, 5>; #declare num[0] = (num[1]+num[8])/2; #declare num[9] = num[0]; #declare x_inic = 0; #declare x_final = 1; #declare Npts = 400; #declare ret1 = array[4][4]; #declare ret1[0][0] = <0, 2, 0>; #declare ret1[0][1] = <1, 2, 1>; #declare ret1[0][2] = <2, 2, 2>; #declare ret1[0][3] = <3, 2, 2>; #declare ret1[1][0] = <0, 2, 2>; #declare ret1[1][1] = <1, 3, 1>; #declare ret1[1][2] = <2, 3, 2>; #declare ret1[1][3] = <3, 3, 1>; #declare ret1[2][0] = <0, 3, 2>; #declare ret1[2][1] = <1, 4, 1>; #declare ret1[2][2] = <2, 4, 2>; #declare ret1[2][3] = <3, 4, 1>; #declare ret2 = array[4][4]; #declare ret2[1][0] = <0, 5, 1>; #declare ret2[1][1] = <1, 5, 3>; #declare ret2[1][2] = <2, 5, 3>; #declare ret2[1][3] = <3, 5, 4>; #declare ret2[2][0] = <0, 7, 2>; #declare ret2[2][1] = <1, 7, 1>; #declare ret2[2][2] = <2, 7, 2>; #declare ret2[2][3] = <3, 7, 3>; #declare ret3 = array[4][4]; #declare ret3[1][0] = <0, 9, 2>; #declare ret3[1][1] = <1, 9, 2>; #declare ret3[1][2] = <2, 9, 2>; #declare ret3[1][3] = <3, 9, 2>; #declare ret3[2][0] = <0, 11, 3>; #declare ret3[2][1] = <1, 11, 3>; #declare ret3[2][2] = <2, 11, 3>; #declare ret3[2][3] = <3, 11, 3>; #declare ret3[3][0] = <0, 13, 1>; #declare ret3[3][1] = <1, 13, 1>; #declare ret3[3][2] = <2, 13, 1>; #declare ret3[3][3] = <3, 13, 1>; #declare ret1[3][0] = (ret1[2][0] + ret2[1][0])/2; #declare ret2[0][0] = ret1[3][0]; #declare ret1[3][1] = (ret1[2][1] + ret2[1][1])/2; #declare ret2[0][1] = ret1[3][1]; #declare ret1[3][2] = (ret1[2][2] + ret2[1][2])/2; #declare ret2[0][2] = ret1[3][2]; #declare ret1[3][3] = (ret1[2][3] + ret2[1][3])/2; #declare ret2[0][3] = ret1[3][3]; #declare ret2[3][0] = (ret3[1][0] + ret2[2][0])/2; #declare ret3[0][0] = ret2[3][0]; #declare ret2[3][1] = (ret3[1][1] + ret2[2][1])/2; #declare ret3[0][1] = ret2[3][1]; #declare ret2[3][2] = (ret3[1][2] + ret2[2][2])/2; #declare ret3[0][2] = ret2[3][2]; #declare ret2[3][3] = (ret3[1][3] + ret2[2][3])/2; #declare ret3[0][3] = ret2[3][3]; #macro interpola(f0, v0, f1, v1, f) #local ss= (f-f0)/(f1-f0); #local rr= 1 - ss; (rr*v0 + ss*v1) #end #macro interpola4(ti, v0, v1, v2, v3, tf, tt) #local v01 = interpola(ti, v0, tf, v1, tt); #local v12 = interpola(ti, v1, tf, v2, tt); #local v23 = interpola(ti, v2, tf, v3, tt); #local v012 = interpola(ti, v01, tf, v12, tt); #local v123 = interpola(ti, v12, tf, v23, tt); interpola(ti, v012, tf, v123, tt); #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.1 texture {tx_xadrez}} } #local i = i + 1; #local xx = xx + delta; #end #end #macro grafico1(x0, y0, y1, y2, y3, x3, N,fase) #local yy = interpola4(x0, y0, y1, y2, y3, x3, fase); object{ sphere { yy , 0.2 texture {tx_plastico3}} } #end #macro grafico4(x0, y01, y02, y03, y12, y13, y22, y23, y32, y33, y34, x3, N) #local xx = x0; #local delta = (x3 - x0)/4; grafico(x0, y01, y02, y03, (y02 + y12)/2, xx+delta, N) #local xx = xx + delta; grafico(xx, (y02 + y12)/2, y12, y13, (y13 + y22)/2, xx+delta, N) #local xx = xx + delta; grafico(xx, (y13 + y22)/2 , y22, y23, (y23 + y32)/2, xx+delta, N) #local xx = xx + delta; grafico(xx, (y23 + y32)/2, y32, y33, y34, xx+delta, N) #end #macro grafico5(x0, y01, y02, y03, y12, y13, y22, y23, y32, y33, y34, x3, N,fase) #local xx = x0; #local delta = (x3 - x0)/4; #if(fase < 0.25) grafico1(x0, y01, y02, y03, (y02 + y12)/2, x0+delta, N,fase) #end #if(fase >= 0.25 & fase < 0.5) grafico1(x0+delta, (y02 + y12)/2, y12, y13, (y13 + y22)/2, x0+2*delta, N,fase) #end #if(fase >= 0.5 & fase < 0.75) grafico1(x0+2*delta, (y13 + y22)/2 , y22, y23, (y23 + y32)/2, x0+3*delta, N,fase) #end #if(fase >= 0.75) grafico1(x0+3*delta, (y23 + y32)/2, y32, y33, y34, x3, N,fase) #end #end #declare tresRetalhos = union { retalho(ret1[0][0], ret1[0][1], ret1[0][2], ret1[0][3], ret1[1][0], ret1[1][1], ret1[1][2], ret1[1][3], ret1[2][0], ret1[2][1], ret1[2][2], ret1[2][3], ret1[3][0], ret1[3][1], ret1[3][2], ret1[3][3], 0.0001, tx_xadrez, tx_plastico1) retalho(ret2[0][0], ret2[0][1], ret2[0][2], ret2[0][3], ret2[1][0], ret2[1][1], ret2[1][2], ret2[1][3], ret2[2][0], ret2[2][1], ret2[2][2], ret2[2][3], ret2[3][0], ret2[3][1], ret2[3][2], ret2[3][3], 0.0001, tx_xadrez, tx_plastico2) retalho(ret3[0][0], ret3[0][1], ret3[0][2], ret3[0][3], ret3[1][0], ret3[1][1], ret3[1][2], ret3[1][3], ret3[2][0], ret3[2][1], ret3[2][2], ret3[2][3], ret3[3][0], ret3[3][1], ret3[3][2], ret3[3][3], 0.0001, tx_xadrez, tx_plastico3) } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #include "eixos.inc" union{ object{ eixos(3.00) } union { grafico4( x_inic, num[0], num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9], x_final, Npts) } grafico5(x_inic, num[0], num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9], x_final, Npts,clock) } #include "camlight.inc" #declare centro_cena = < 0.00, 3.60, 1.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 10.01, 1.01, 10.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)