// ====================================================================== // CORES E TEXTURAS #include "textures.inc" #include "eixos.inc" #include "transforms.inc" #include "shapes.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.35 ambient 0.02 specular 0.25 roughness 0.005 ior 1.5} } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.90, 0.90, 1.00 >, color rgb < 0.90, 1.00, 0.90> } finish{ diffuse 0.9 ambient 0.1 } scale 15.0 } #declare tx_strip = texture{ pigment{ color rgb < 1.00, 0.40, 0.40 >} } #declare random_seed = seed (1516); #macro random() rand(random_seed) #end #macro srandom() 1-2*random() #end #macro vrandom() vnormalize(< 1-2*random(), 1-2*random(), 1-2*random() >) #end plane { <0,0,1>, -100 texture { tx_xadrez } } plane { <0,1,0>, -100 texture { tx_xadrez } } plane { <1,0,0>, -100 texture { tx_xadrez } } // ====================================================================== // DESCRIÇÃO DA CENA //Definição Algébrica #macro interpola4(q, v1, v2, v3, v4) 1*(1-q)*(1-q)*(1-q)*v1 + 3*(1-q)*(1-q)*( q)*v2 + 3*(1-q)*( q)*( q)*v3 + 1*( q)*( q)*( q)*v4 #end //Definição Algébrica #macro interpola4_derivada(q, v1, v2, v3, v4) -3*((q-1)*(q-1)*v1 + (-1 + 4*q - 3*q*q)*v2 + q*(-2*v3 + 3*q*v3 - q*v4)) #end #macro interpola4_derivada2(q, v1, v2, v3, v4) -6*((-1 + q)*v1 + (2 - 3*q)*v2 - v3 + 3*q*v3 - q*v4) #end #macro bezier_tangentes(curve, n_curves, v1, v2, v3, v4, Norm1, Norm3, N) #local i=0; #declare Norm2 = vnormalize( interpola4_derivada2(0.5,P1,P2,P3,P4) ); #while (i<=N) #local q=i/N; #local qq=100+q-clock; #local qq=qq - int(qq); #local V0= interpola4(q, v1,v2,v3,v4); #local V1 = vnormalize( interpola4_derivada (q, v1,v2,v3,v4) ); #local V2 = vnormalize( (1-q)*(1-q)*Norm1 + 2*(1-q)*q*Norm2 + q*q*Norm3); // #local V2 = vnormalize( (1-q)*Norm1 + q*Norm3); #local V2 = vaxis_rotate(V2, V1, 90*(1-qq)*sin((5*q+clock)*2*pi) ); #local L1=10*qq; #local L2=10*qq; #if (i>0) #local D = -vlength(V0-V0_Prev)/3; #local H = 2; bicubic_patch{ type 1 u_steps 3 v_steps 3 V0 + L1*V2, V0 + D*V1 + L1*V2, V0_Prev - D*V1_Prev + L1_Prev*V2_Prev, V0_Prev + L1_Prev*V2_Prev V0 , V0 + D*V1 , V0_Prev - D*V1_Prev , V0_Prev V0 , V0 + D*V1 , V0_Prev - D*V1_Prev , V0_Prev V0 - L2*V2, V0 + D*V1 - L2*V2, V0_Prev - D*V1_Prev - L2_Prev*V2_Prev, V0_Prev - L2_Prev*V2_Prev texture {tx_strip} } #end #local i=i+1; #local V0_Prev = V0; #local V1_Prev = V1; #local V2_Prev = V2; #local L1_Prev = L1; #local L2_Prev = L2; // #local V3_Prev = V3; #end #end #declare NSEGS = 4; #declare P = array[NSEGS]; #declare TG = array[NSEGS]; #declare NORM = array[NSEGS]; #declare i=0; #while (i; #declare i=i+1; #end #declare i=0; #while (i; #declare raio_cena = 80; #declare dir_camera = <5,5,5>; #declare dist_camera = 100; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)