// 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_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 < 0.3, 0.3, 1.00 > } 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 } #include "eixos.inc" #include "retalho.inc" #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #macro interpola(f0,v0,f1,v1,f) #local ss = (f-f0)/(f1-f0); #local rr = 1-ss; (rr*v0+ss*v1) #end #macro interpola_complicado (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 grafico(x0, y0, y1, y2, y3, x3, tt) #local Y = interpola_complicado(x0, y0, y1, y2, y3, x3, tt); object{sphere {Y 0.5} texture{tx_xadrez}} #end #macro grafico4(x0, y_inicial, y10, y11, y20, y21, y30, y31, y40, y41, y_final, x3, fase) #local y_inicial1 = (y11+y20)/2; #local y_inicial2 = (y21+y30)/2; #local y_inicial3 = (y31+y40)/2; union{ #if(fase<0.25) grafico(x0,y_inicial,y10,y11,y_inicial1,x3/4, fase) #else #if(fase<0.5) grafico(x3/4,y_inicial1,y20,y21,y_inicial2,x3/2, fase) #else #if(fase<0.75) grafico(x3/2,y_inicial2,y30,y31,y_inicial3,3*x3/4, fase) #else grafico(3*x3/4,y_inicial3,y40,y41,y_inicial,x3, fase) #end #end #end } #end #macro grafico2(x0, y0, y1, y2, y3, x3, N) #local intervaloX = (x3-x0)/N; #local X=x0; #while(X<=x3) #local Y = interpola_complicado(x0, y0, y1, y2, y3, x3, X); #local X = X + intervaloX; object{sphere {Y 0.1} texture{tx_espelho}} #end #end #macro grafico42(x0, y_inicial, y10, y11, y20, y21, y30, y31, y40, y41, y_final, x3, N) #local y_inicial1 = (y11+y20)/2; #local y_inicial2 = (y21+y30)/2; #local y_inicial3 = (y31+y40)/2; union{ grafico2(x0,y_inicial,y10,y11,y_inicial1,x3/4,N) grafico2(x3/4,y_inicial1,y20,y21,y_inicial2,x3/2,N) grafico2(x3/2,y_inicial2,y30,y31,y_inicial3,3*x3/4,N) grafico2(3*x3/4,y_inicial3,y40,y41,y_inicial,x3,N) } #end #macro junta_retalho() #local r11 = <5,-5,0>; #local r12 = <5,-2,2>; #local r13 = <5,-1,2>; #local r14 = <5,2,0>; #local r21 = <4,-5,0>; #local r22 = <4,-2,2>; #local r23 = <4,-1,2>; #local r24 = <4,2,0>; #local r31 = <3,-5,0>; #local r32 = <3,-2,2>; #local r33 = <3,-1,2>; #local r34 = <3,2,0>; #local q21 = <2,-5,0>; #local q22 = <2,-2,2>; #local q23 = <2,-1,2>; #local q24 = <2,2,0>; #local q31 = <1,-5,0>; #local q32 = <1,-2,2>; #local q33 = <1,-1,2>; #local q34 = <1,2,0>; #local p21 = <0,-5,0>; #local p22 = <0,-2,2>; #local p23 = <0,-1,2>; #local p24 = <0,2,0>; #local p31 = <-2,-5,0>; #local p32 = <-2,-2,2>; #local p33 = <-2,-1,2>; #local p34 = <-2,2,0>; #local p41 = <-4,-5,0>; #local p42 = <-4,-2,2>; #local p43 = <-3,-1,2>; #local p44 = <-4,2,0>; #local r41 = (q21+r31)/2; #local r42 = (q22+r32)/2; #local r43 = (q23+r33)/2; #local r44 = (q24+r34)/2; #local q11 = (q21+r31)/2; #local q12 = (q22+r32)/2; #local q13 = (q23+r33)/2; #local q14 = (q24+r34)/2; #local q41 = (p21+q31)/2; #local q42 = (p22+q32)/2; #local q43 = (p23+q33)/2; #local q44 = (p24+q34)/2; #local p11 = (p21+q31)/2; #local p12 = (p22+q32)/2; #local p13 = (p23+q33)/2; #local p14 = (p24+q34)/2; union{ retalho(p11, p12, p13, p14, p21, p22, p23, p24, p31, p32, p33, p34, p41, p42, p43, p44, 0.0, tx_espelho, tx_fosca) retalho(q11, q12, q13, q14, q21, q22, q23, q24, q31, q32, q33, q34, q41, q42, q43, q44, 0.0, tx_xadrez, tx_plastico) retalho(r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44, 0.0, tx_xadrez, tx_fosca) } #end object{grafico4(0, <-4,-5,0>, <-4,-2,0>, <5,0,2>, <4,0,2>, <3,0,2>, <4,-1,2>, <3,-8,2>, <0,-4,2>, <3,0,2>, <0,1,2>, 1, clock) translate<0,8,0>} object{grafico42(-4, <-4,-5,0>, <-4,-2,0>, <5,0,2>, <4,0,2>, <3,0,2>, <4,-1,2>, <3,-8,2>, <0,-4,2>, <3,0,2>, <0,1,2>, 10, 30) translate<0,8,0>} object{ eixos(3.00) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 22.0; #declare dir_camera = < -1.00, 1.00, 3.00 >; #declare dist_camera = 12.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)