//Caixa de Surpresas // ====================================================================== // CORES E TEXTURAS #include "colors.inc" #include "stones.inc" 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_color = texture{ pigment{ color rgb < 2.00, 0.40, 0.20 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } 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 } // ====================================================================== // DESCRICAO DA CENA #include "eixos.inc" #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) //primeiro grupo #local v01 = Interpola(t0, v0, t3, v1, tt); #local v12 = Interpola(t0, v1, t3, v2, tt); #local v23 = Interpola(t0, v2, t3, v3, tt); //Segundo grupo #local v012 = Interpola(t0, v01, t3, v12, tt); #local v123 = Interpola(t0, v12, t3, v23, tt); //Final Interpola(t0, v012, t3, v123, tt); #end #macro grafico(x0, y0, y1, y2, y3, x3, N) #local intervaloX = (x3-x0)/N; #local xx=x0; #while(xx<=x3) #local yy=Interpola4(x0, y0, y1, y2, y3, x3, xx); #local xx = xx+intervaloX; object{sphere{ <0, xx, yy >, .15 texture{ tx_fosca }}} #end #end #macro grafico_complexo(x0, y00, y01, y02, y11, y12, y21, y22, y31, y32, y33, x3, N) #local tam_grafico=(x3-x0)/4; #local intervaloX = (x3-x0)/N; //Grafico 1 #local inicio_grafico=x0; #local v0=y00; #local v3=(y02+y11)/2; #local fim_grafico=inicio_grafico+tam_grafico; grafico(inicio_grafico, v0, y01, y02, v3, fim_grafico, N/4) //Grafico 2 #local inicio_grafico=fim_grafico; #local v0=v3; #local v3=(y12+y21)/2; #local fim_grafico=inicio_grafico+tam_grafico; grafico(inicio_grafico, v0, y11, y12, v3, fim_grafico, N/4) //Grafico 3 #local inicio_grafico=fim_grafico; #local v0=v3; #local v3=(y22+y31)/2; #local fim_grafico=inicio_grafico+tam_grafico; grafico(inicio_grafico, v0, y21, y22, v3, fim_grafico, N/4) //Grafico 4 #local inicio_grafico=fim_grafico; #local v0=v3; #local v3=y33; #local fim_grafico=inicio_grafico+tam_grafico; grafico(inicio_grafico, v0, y31, y32, v3, fim_grafico, N/4) #end object {eixos(3.00)} //grafico(0, 3, -2, 2, -4, 10, 15) grafico_complexo(-4, 0, -2, 2, 4, 6, -1, 3, -4, 1, 2, 10,30) #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 17.0; #declare dir_camera = < 2, -2, 2.00 >; #declare dist_camera = 300.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)