// Last edited on DATE TIME by USER // Processed by remove-cam-lights #include "retalho.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_tronco = texture{ pigment{ color rgb < 0.85, 0.50, 0.30 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_certo = texture{ pigment{ color rgb < 0.15, 0.40, 0.15 > } finish{ diffuse 0.9 ambient 0.8 } } #declare tx_erro = texture{ pigment{ color rgb < 0.60, 0.1, 0.1 >} finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare tx_transp = texture{ pigment{ color rgbf<1,0.7,0, 0.7>} finish { diffuse 0.9 phong 0.5} } #declare raio = 0.01; #declare rad = 0.1; #declare raio2 = 0.2; #declare ponto = sphere { <0,0,0>,raio texture{tx_tronco} } #declare bola = sphere { <0,0,0>, raio2 texture{tx_tronco} } #declare pp11 = <0,1,-3>; #declare pp12 = <0, 2, 1>; #declare pp13 = <0, 4, -2>; #declare pp14 = <0, 5, 2>; #declare pp21 = <4, 1, 2>; #declare pp22 = <4, 2, 0>; #declare pp23 = <4, 4, -1>; #declare pp24 = <4, 5, 2>; #declare pp31 = <5, 1, 3>; #declare pp32 = <6, 2, 2>; #declare pp33 = <5, 4, -3>; #declare pp34 = <4, 5, 3>; #declare qp21 = <6, 1, -2>; #declare qp22 = <6, 2, 1>; #declare qp23 = <6, 4, -1>; #declare qp24 = <6, 5, 4>; #declare qp31 = <9, 1, -2>; #declare qp32 = <9, 2, 1>; #declare qp33 = <9, 4, -1>; #declare qp34 = <9, 5, 4>; #declare rp21 = <5, 1, -2>; #declare rp22 = <5, 2, 1>; #declare rp23 = <5, 4, -1>; #declare rp24 = <5, 5, 4>; #declare rp31 = <7, 1, -3>; #declare rp32 = <5, 2, 1>; #declare rp33 = <4, 4, -1>; #declare rp34 = <7, 5, 4>; #declare rp41 = <3, 1, -3>; #declare rp42 = <6, 2, 1>; #declare rp43 = <5, 4, -1>; #declare rp44 = <7, 5, 4>; #declare pg11 = <3, 3, 3>; #declare pg12 = <4,-5,3>; #declare pg13 = <-2, 0, 1>; #declare pg22 = <3, -2, 0>; #declare pg23 = <2, 1, -4>; #declare pg32 = <-4, 1, 4>; #declare pg33 = <1, 0, 3>; #declare pg42 = <4, 1, 3>; #declare pg43 = <3, 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 (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) #local q = 0; #local num = (x3-x0)/n; union{ #while (q < n) #local xx = x0 + (q*num); #local yy = interpola4 (x0, y0, y1, y2, y3, x3, xx); object {ponto translate yy} #local q = q+1; #end } #end #macro ponto_medio (v1, v2) #local p = (v2 + v1)/2; p #end #macro retalho3 (p11, p12, p13, p14, p21, p22, p23, p24, p31, p32, p33, p34, q21, q22, q23, q24, q31, q32, q33, q34, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44 rad, tx_erro,tx_certo) #local p41 = ponto_medio(p31, q21); #local p42 = ponto_medio(p32, q22); #local p43 = ponto_medio(p33, q23); #local p44 = ponto_medio(p34, q24); #local r11 = ponto_medio(q31, r21); #local r12 = ponto_medio(q32, r22); #local r13 = ponto_medio(q33, r23); #local r14 = ponto_medio(q34, r44); union{ retalho(p11, p12, p13, p14, p21, p22, p23, p24, p31, p32, p33, p34, p41, p42, p43, p44, rad, tx_erro, tx_transp ) retalho(p41, p42, p43, p44, q21, q22, q23, q24, q31, q32, q33, q34, r11, r12, r13, r14, rad, tx_tronco,tx_transp) retalho(r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44, rad, tx_tronco, tx_transp) } #end #macro pos4(t_clock, ti, g11, g12, g13, g22, g23, g32, g33, g42, g43, tf) #local g14 = ponto_medio(g13, g22); #local g24 = ponto_medio(g23, g32); #local g34 = ponto_medio(g33, g42); #local t1f = (tf-ti)/4; #local t2f = (2*(tf-ti))/4; #local t3f = (3*(tf-ti))/4; #local prop = mod(t_clock, 0.25)/0.25; #if(t_clock < 0.25) #local tt = ti + (t1f-ti)*prop; #local vv = interpola4(ti, g11, g12, g13, g14, t1f, tt); #else #if(t_clock < 0.5) #local tt = t1f + (t2f-t1f)*prop; #local vv = interpola4(t1f, g14, g22, g23, g24, t2f, tt); #else #if(t_clock < 0.75) #local tt = t2f + (t3f-t2f)*prop; #local vv = interpola4(t2f, g24, g32, g33, g34, t3f, tt); #else #local tt = t3f + (tf-t3f)*prop; #local vv = interpola4(t3f, g34, g42, g43, g11, tf, tt); #end #end #end (vv) #end #include "eixos.inc" union{ object { eixos(3.0) } union{ object {grafico (0, ponto_medio(pg12,pg43), pg12, pg13, ponto_medio(pg13, pg22), 5, 1000)} object {grafico (5, ponto_medio(pg13, pg22), pg22, pg23, ponto_medio(pg23, pg32), 10, 1000)} object {grafico (10, ponto_medio(pg23, pg32), pg32, pg33, ponto_medio(pg33, pg42), 15, 1000)} object {grafico (15, ponto_medio(pg33, pg42), pg42, pg43, ponto_medio(pg12,pg43), 20, 1000)} } object {bola translate pos4(clock, 0, ponto_medio(pg12,pg43), pg12, pg13, pg22, pg23, pg32, pg33, pg42, pg43, 1)} } #include "camlight.inc" #declare centro_cena = < 3.00, 2.00, 4.00 >; #declare raio_cena = 5.0; #declare dir_camera = < 3.0, 5.0, 10.00 >; #declare dist_camera = 5.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)