// CORES E TEXTURAS background{ color rgb < 0, 0, 0 > } #include "eixos.inc" #include "textures.inc" #include "retalho.inc" //texturas: #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_vidro_verde = texture{ pigment{ color rgb < 0.10, 0.80, 0.10 > filter 0.90 } finish{ diffuse 1 reflection 0.1 ambient 0.02 specular 0.25 roughness 0.1 } } #declare tx_vidro_vermelho = texture{ pigment{ color rgb < 0.80, 0.10, 0.10 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.7 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 } //valores: #declare grafico_ponto_raio = 0.05; #declare desloc1 = <0,-2,0>; #declare desloc2 = <0,-1,0>; #declare desloc3 = <0,+1,0>; #declare desloc4 = <0,+2,0>; #declare t_var_delta = 0.1; //partes da cena: #macro interpola(t0,v0,t1,v1,tt) #local ss = (tt-t0)/(t1-t0); #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_ponto (tt,vv) sphere{ vv , grafico_ponto_raio texture{ tx_fosca } } #end #macro grafico_ponto2 (tt,vv) sphere{ vv , grafico_ponto_raio*5 texture{ tx_fosca } } #end #macro grafico(t0,v0,v1,v2,v3,t3,n) #local delta = (t3-t0)/(n-1); #local tt = t0; #while(tt<=t3) #local vv = interpola4(t0,v0,v1,v2,v3,t3,tt); grafico_ponto(tt,vv) #local tt = tt + delta; #end #end #macro grafico4(t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d,n) union{ #local t3a = t0a+1*(t3d-t0a)/4; #local v3a = (v2a+v1b)/2; grafico(t0a,v0a,v1a,v2a,v3a,t3a,n/4) #local t3b = t0a+2*(t3d-t0a)/4; #local v3b = (v2b+v1c)/2; grafico(t3a,v3a,v1b,v2b,v3b,t3b,n/4) #local t3c = t0a+3*(t3d-t0a)/4; #local v3c = (v2c+v1d)/2; grafico(t3b,v3b,v1c,v2c,v3c,t3c,n/4) grafico(t3c,v3c,v1d,v2d,v3d,t3d,n/4)} #end #macro retalho2(p11,p12,p13,p14, p21,p22,p23,p24, p31,p32,p33,p34, q21,q22,q23,q24, q31,q32,q33,q34, q41,q42,q43,q44, rad,txg,txr) #local p41 = (p31+q21)/2; #local p42 = (p32+q22)/2; #local p43 = (p33+q23)/2; #local p44 = (p34+q24)/2; union{ retalho (p11,p12,p13,p14,p21,p22,p23,p24,p31,p32,p33,p34,p41,p42,p43,p44, rad,txg,txr) retalho (p41,p42,p43,p44,q21,q22,q23,q24,q31,q32,q33,q34,q41,q42,q43,q44, rad,txg,txr) } #end #macro pos(t_var,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d) #local t3a = t0a+1*(t3d-t0a)/4; #local v3a = (v2a+v1b)/2; #local t3b = t0a+2*(t3d-t0a)/4; #local v3b = (v2b+v1c)/2; #local t3c = t0a+3*(t3d-t0a)/4; #local v3c = (v2c+v1d)/2; #local prop = mod(t_var,0.25)/0.25; #if(t_var<0.25) #local tt = (prop * (t3a-t0a))+t0a; #local vv = interpola4(t0a,v0a,v1a,v2a,v3a,t3a,tt); #else #if(t_var<0.50) #local tt = (prop * (t3b-t3a))+t3a; #local vv = interpola4(t3a,v3a,v1b,v2b,v3b,t3b,tt); #else #if(t_var<0.75) #local tt = (prop * (t3c-t3b))+t3b; #local vv = interpola4(t3b,v3b,v1c,v2c,v3c,t3c,tt); #else #local tt = (prop * (t3d-t3c))+t3c; #local vv = interpola4(t3c,v3c,v1d,v2d,v3d,t3d,tt); #end #end #end (vv) #end #macro retalhoanimado(t_var,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d, rad,txg,txr) union{ #local t_var_1 = mod(t_var+5*t_var_delta,1); #local p1 = pos(t_var_1,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d); #local p11 = p1 + desloc1; #local p12 = p1 + desloc2; #local p13 = p1 + desloc3; #local p14 = p1 + desloc4; #local t_var_2 = mod(t_var+4*t_var_delta,1); #local p2 = pos(t_var_2,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d); #local p21 = p2 + desloc1; #local p22 = p2 + desloc2; #local p23 = p2 + desloc3; #local p24 = p2 + desloc4; #local t_var_3 = mod(t_var+3*t_var_delta,1); #local p3 = pos(t_var_3,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d); #local p31 = p3 + desloc1; #local p32 = p3 + desloc2; #local p33 = p3 + desloc3; #local p34 = p3 + desloc4; #local t_var_4 = mod(t_var+2*t_var_delta,1); #local q2 = pos(t_var_4,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d); #local q21 = q2 + desloc1; #local q22 = q2 + desloc2; #local q23 = q2 + desloc3; #local q24 = q2 + desloc4; #local t_var_5 = mod(t_var+1*t_var_delta,1); #local q3 = pos(t_var_5,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d); #local q31 = q3 + desloc1; #local q32 = q3 + desloc2; #local q33 = q3 + desloc3; #local q34 = q3 + desloc4; #local q4 = pos(t_var,t0a,v0a,v1a,v2a,v1b,v2b,v1c,v2c,v1d,v2d,t3d,v3d); #local q41 = q4 + desloc1; #local q42 = q4 + desloc2; #local q43 = q4 + desloc3; #local q44 = q4 + desloc4; retalho2(p11,p12,p13,p14, p21,p22,p23,p24, p31,p32,p33,p34, q21,q22,q23,q24, q31,q32,q33,q34, q41,q42,q43,q44, rad,txg,txr) } #end //cena: union{ object{ grafico4(0, <0,0,-3>, <-1,0,-3>, <-3,0,-1>, <-3,0,1>, <-1,0,3>, <1,0,3>, <3,0,1>, <3,0,-1>, <1,0,-3>, 1, <0,0,-3>, 1000) // translate <3,-4,3> } object{ retalhoanimado(clock,0, <0,0,-3>, <-1,0,-3>, <-3,0,-1>, <-3,0,1>, <-1,0,3>, <1,0,3>, <3,0,1>, <3,0,-1>, <1,0,-3>, 1, <0,0,-3>, 0.03, tx_fosca, tx_vidro_verde) } object{ grafico4(0, <0,0,2>, <0,0,5>, <-3,4,0>, <-2,-1,1>, <3,5,-2>, <3,3,-5>, <0,-4,3>, <2,4,-3>, <0,0,1>, 1, <0,0,2>, 1000) translate <2,4,1> } object{ grafico_ponto2(0,pos(clock,0, <0,0,2>, <0,0,5>, <-3,4,0>, <-2,-1,1>, <3,5,-2>, <3,3,-5>, <0,-4,3>, <2,4,-3>, <0,0,1>, 1, <0,0,2>)) translate <2,4,1> } //grafico_ponto2(1,<-3,4,0>) //grafico_ponto2(2,<-3,4,0>) //grafico_ponto2(3,<3,5,-2>) //grafico_ponto2(4,<3,5,-2>) //grafico_ponto2(5,<0,-4,3>) //grafico_ponto2(6,<0,-4,3>) //grafico_ponto2(7,<0,0,5>)*/ //plane{ <0,0,1>, 0 interior{ ior 1.15 } } //plane{ <1,0,0>, 0 interior{ ior 1.15 } } /* retalho( <0,0,5>, <0,1,0>, <0,3,0>, <0,5,2>, <1,0,3>, <1,1,0>, <2,3,1>, <2,5,0>, <4,0,1>, <3,1,0>, <3,4,-1>, <3,5,0>, <5,0,0>, <5,2,-1>, <5,3,0>, <5,5,-2>, 0.03, tx_fosca, tx_vidro_verde )*/ /* object{ retalho2( <0,0,5>, <0,1,0>, <0,3,0>, <0,5,2>, <1,0,3>, <1,1,0>, <2,3,1>, <2,5,0>, <4,0,1>, <3,1,0>, <3,4,-1>, <3,5,0>, <6,0,0>, <6,2,-1>, <6,3,0>, <6,5,-2>, <7,0,0>, <7,2,-1>, <7,3,-1>, <7,5,-1>, <8,0,-1>, <8,2,-1>, <8,3,0>, <8,5,0>, 0.03, tx_fosca, tx_vidro_verde ) translate -1*z }*/ object { eixos(10.0) } } #include "camlight.inc" #declare centro_cena = < 3.00, 2.00, 0.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 10.00, 4, 3 >; #declare dist_camera = 15.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)