// ====================================================================== // CORES E TEXTURAS 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 } //=============================================== // Declaracoes #declare raio = 0.1; #declare ponto = sphere { <0,0,0>,raio texture{tx_tronco} } //Macro interpola======================================================== #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========================================================== #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 } #local q = q+1; #end } #end //======================================================================= #macro ponto_medio (v1, v2) #local p = (v2 + v1)/2; p #end // ====================================================================== // DESCRIÇÃO DA CENA #include "eixos.inc" // Aqui está a cena, finalmente: union{ object { eixos(3.0) } //object {grafico (0, 3, 5, -4, 10, 15, 20)} object {grafico (0, 10, -2, 5, ponto_medio(5, -8), 5, 50)} object {grafico (5, ponto_medio(5, -8), -8, 9, ponto_medio(9, -3), 10, 50)} object {grafico (10, ponto_medio(9, -3), -3, 7, ponto_medio(7, 0), 15, 50)} object {grafico (15, ponto_medio(7, 0), 0, 3, -4, 20, 50)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 20.0; #declare dir_camera = < 10.00, 7.00, 4.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)