// Last edited on 2009-11-24 22:25:32 by stolfilocal // Processed by remove-cam-lights #macro eixo(ponta,cor,nome) union{ sphere{ <0,0,0>, 0.02 } cylinder{ <0,0,0>, 0.91*ponta, 0.02 } cone{ 0.90*ponta, 0.06, ponta, 0.00 } texture{ pigment{ color rgb cor } finish{ ambient 0.5 diffuse 0.5 } } } #end #macro eixos(tamanho) union{ object{ eixo( , <1.0,0.2,0.2>, "X") } object{ eixo( <0,tamanho,0>, <0.0,0.8,0.0>, "Y") } object{ eixo( <0,0,tamanho>, <0.3,0.3,1.0>, "Z") } } #end #include "nuvens.inc" #include "retalho.inc" #declare grid_rd = 0.04; #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_laranja = texture{ pigment{ color rgb < 1.00, 0.50, 0.00 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_grade = texture{ pigment{ color rgb < 0.70, 0.30, 1.00 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_rosa = texture{ pigment{ color rgb < 1.00, 0.50, 0.50 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_preta = texture{ pigment{ color rgb < 0.20, 0.20, 0.20 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_rosa_metalica = texture{ pigment{ color rgb < 1.00, 0.50, 0.50 > } finish{ diffuse 1 ambient 0.1 reflection 0.05 specular 0.8 roughness 0.005 } } #declare tx_metal = texture{ pigment{ color rgb < 0.50, 0.50, 0.50 > } finish{ diffuse 1 ambient 0.1 reflection 0.05 specular 0.8 roughness 0.005 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.90, 0.70 > } finish{ diffuse 0.1 reflection 0.8*< 1.00, 0.90, 0.70 > ambient 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.97, 0.98, 1.00 > filter 0.10 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } union{ #macro carro(espelho, p_a1, p_a2, p_a3, p_a4, p_b1, p_b2, p_b3, p_b4, p_c1, p_c2, p_c3, p_c4, p_d1, p_d2, p_d3, p_d4) #local a12d = <10, 2, -2>; #local a12e = <10, -2, -2>; #local a11 = (a12d + a12e)/2; #local a12 = a12d; #local a13 = <10, 2.5, -2>; #local a14 = <9.5, 3, -2>; #local a22d = <9, 2, -0.5>; #local a22e = <9, -2, -0.5>; #local a21 = (a22d + a22e)/2; #local a22 = a22d; #local a23 = p_a1; #local a24 = p_a2 ; #local a32d = <8, 2, 0.8>; #local a32e = <8, -2, 0.8>; #local a31 = (a32d + a32e)/2; #local a32 = a32d; #local a33 = p_a3; #local a34 = p_a4; #local b22d = <4, 2, 1>; #local b22e = <4, -2, 1>; #local b21 = (b22d + b22e)/2; #local b22 = b22d; #local b23 = p_b1; #local b24 = p_b2; #local b32d = <2, 2, 1.5>; #local b32e = <2, -2, 1.5>; #local b31 = (b32d + b32e)/2; #local b32 = b32d; #local b33 = p_b3; #local b34 = p_b4 ; #local a41 = (a31 + b21)/2; #local a42 = (a32 + b22)/2; #local a43 = (a33 + b23)/2; #local a44 = (a34 + b24)/2; #local b11 = a41; #local b12 = a42; #local b13 = a43; #local b14 = a44; #local c22d =<-2, 2, 1.5>; #local c22e = <-2, -2, 1.5>; #local c21 = (c22d + c22e)/2; #local c22 = c22d; #local c23 = p_c1; #local c24 = p_c2; #local c32d =<-4, 2, 1>; #local c32e = <-4, -2, 1>; #local c31 = (c32d + c32e)/2; #local c32 = c32d; #local c33 = p_c3; #local c34 = p_c4; #local d22d =<-8, 2, 0.8>; #local d22e = <-8, -2, 0.8>; #local d21 = (d22d + d22e)/2; #local d22 = d22d; #local d23 = p_d1; #local d24 = p_d2; #local d32d =<-9, 2, -0.5>; #local d32e = <-9, -2, -0.5>; #local d31 = (d32d + d32e)/2; #local d32 = d32d; #local d33 = p_d3; #local d34 = p_d4 ; #local d41 = <-10, 0, -2>; #local d42 = <-10, 2, -2>; #local d43 = <-10, 2.5, -2>; #local d44 = <-9.5, 3, -2>; #local b41 = (b31 + c21)/2; #local b42 = (b32 + c22)/2; #local b43 = (b33 + c23)/2; #local b44 = (b34 + c24)/2; #local c11 = b41; #local c12 = b42; #local c13 = b43; #local c14 = b44; #local c41 = (c31 + d21)/2; #local c42 = (c32 + d22)/2; #local c43 = (c33 + d23)/2; #local c44 = (c34 + d24)/2; #local d11 = c41; #local d12 = c42; #local d13 = c43; #local d14 = c44; union{ retalho(a11, a12, a13, a14, a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43, a44, tx_grade, tx_rosa_metalica) retalho(b11, b12, b13, b14, b21, b22, b23, b24, b31, b32, b33, b34, b41, b42, b43, b44, tx_grade, tx_vidro) retalho(c11, c12, c13, c14, c21, c22, c23, c24, c31, c32, c33, c34, c41, c42, c43, c44, tx_grade, tx_rosa_metalica) retalho(d11, d12, d13, d14,d21, d22, d23, d24, d31, d32, d33, d34, d41, d42, d43, d44, tx_grade, tx_rosa_metalica) object {roda() translate <4,1.6,-2>} object {roda() translate <-7,1.8,-2>} scale 0.4 scale <1,espelho,1> } #end #macro roda() difference{ cylinder{< 0, 0, 0 >, < 0, 1, 0 >, 1 texture{ tx_fosca_preta }} sphere{< 0, 1, 0 >, 0.5 texture{ tx_metal }} scale 1.4 } #end #macro cena_automovel(ck) #local ck1 = 0.0; #local q1_p_a1 = <9, 3, -1>; #local q1_p_a2 = <6, 3.5, -2>; #local q1_p_a3 = <8, 3, 0.5>; #local q1_p_a4 = <9, 3.5, 0>; #local q1_p_b1 = <4, 3, 0.5>; #local q1_p_b2 = <2, 3.5, 0>; #local q1_p_b3 = <2, 3, 0>; #local q1_p_b4 = <4, 3.5, -2>; #local q1_p_c1 = <-2, 3, 0>; #local q1_p_c2 = <-5, 3.5, -2>; #local q1_p_c3 = <-4, 3, 0.5>; #local q1_p_c4 = <-3, 3.5, 0>; #local q1_p_d1 = <-8, 3, 0.5>; #local q1_p_d2 = <-10, 3.5, 0>; #local q1_p_d3 = <-9, 3, -1>; #local q1_p_d4 = <-7, 3.5, -2>; #local ck2 = 0.25; #local q2_p_a1 = <9, 3,-2>; #local q2_p_a2 = <6, 3.5, -2>; #local q2_p_a3 = <8, 3, -2>; #local q2_p_a4 = <9, 3.5, 0>; #local q2_p_b1 = <4, 3, 0.5>; #local q2_p_b2 = <2, 2, 0>; #local q2_p_b3 = <6, 3, 0>; #local q2_p_b4 = <4, 3.5, -2>; #local q2_p_c1 = <-2, 3, 0>; #local q2_p_c2 = <-5, 2, -2>; #local q2_p_c3 = <-4, 3, -1>; #local q2_p_c4 = <-3, 3.5, 0>; #local q2_p_d1 = <-8, 3, 0.5>; #local q2_p_d2 = <-10, 2.5, 0>; #local q2_p_d3 = <-9, 3, -1>; #local q2_p_d4 = <-7, 5, -2>; #local ck3 = 0.5; #local q3_p_a1 = <9, 3, -1>; #local q3_p_a2 = <6, 3.5, -2>; #local q3_p_a3 = <8, 3, 5>; #local q3_p_a4 = <9, 3.5, 0>; #local q3_p_b1 = <4, 3, 0.5>; #local q3_p_b2 = <2, 3.5, 0>; #local q3_p_b3 = <2, 3, 0>; #local q3_p_b4 = <4, 3.5, -2>; #local q3_p_c1 = <-2, 3, 0>; #local q3_p_c2 = <-1, 2, -2>; #local q3_p_c3 = <-4, 3, -6>; #local q3_p_c4 = <-6, 0, 0>; #local q3_p_d1 = <-8, 3, 3>; #local q3_p_d2 = <-5, 4, 0>; #local q3_p_d3 = <-9, 3, -1>; #local q3_p_d4 = <-10, 5, -2>; #local ck4 = 0.75; #local q4_p_a1 = <9, 3, 4>; #local q4_p_a2 = <6, 3.5, -2>; #local q4_p_a3 = <8, 3, 2>; #local q4_p_a4 = <9, 3.5, 0>; #local q4_p_b1 = <4, 3, 0.5>; #local q4_p_b2 = <2, 3.5, 0>; #local q4_p_b3 = <2, 2, 6>; #local q4_p_b4 = <4, 3.5, -2>; #local q4_p_c1 = <-2, 3, 0>; #local q4_p_c2 = <-5, 3.5, -2>; #local q4_p_c3 = <-4, 3, 0.5>; #local q4_p_c4 = <-3, 3.5, 0>; #local q4_p_d1 = <-8, 3,2>; #local q4_p_d2 = <-10, 3.5, 1>; #local q4_p_d3 = <-9, 3, -1>; #local q4_p_d4 = <-10, 5, -2>; #local ck5 = 1.00; #if ((ck>= ck1) & (ck< ck2) ) #local tt = (ck-ck1)/(ck2-ck1); #local a1 = (1-tt)*q1_p_a1 + (tt)*q2_p_a1; #local a2 = (1-tt)*q1_p_a2 + (tt)*q2_p_a2; #local a3 = (1-tt)*q1_p_a3 + (tt)*q2_p_a3; #local a4 = (1-tt)*q1_p_a4 + (tt)*q2_p_a4; #local b1 = (1-tt)*q1_p_b1 + (tt)*q2_p_b1; #local b2 = (1-tt)*q1_p_b2 + (tt)*q2_p_b2; #local b3 = (1-tt)*q1_p_b3 + (tt)*q2_p_b3; #local b4 = (1-tt)*q1_p_b4 + (tt)*q2_p_b4; #local c1 = (1-tt)*q1_p_c1 + (tt)*q2_p_c1; #local c2 = (1-tt)*q1_p_c2 + (tt)*q2_p_c2; #local c3 = (1-tt)*q1_p_c3 + (tt)*q2_p_c3; #local c4 = (1-tt)*q1_p_c4 + (tt)*q2_p_c4; #local d1 = (1-tt)*q1_p_d1 + (tt)*q2_p_d1; #local d2 = (1-tt)*q1_p_d2 + (tt)*q2_p_d2; #local d3 = (1-tt)*q1_p_d3 + (tt)*q2_p_d3; #local d4 = (1-tt)*q1_p_d4 + (tt)*q2_p_d4; #end #if ((ck>=ck2) & (ck=ck3) & (ck=ck4) & (ck<=ck5) ) #local tt = (ck-ck4)/(ck5-ck4); #local a1 = (1-tt)*q4_p_a1 + (tt)*q1_p_a1; #local a2 = (1-tt)*q4_p_a2 + (tt)*q1_p_a2; #local a3 = (1-tt)*q4_p_a3 + (tt)*q1_p_a3; #local a4 = (1-tt)*q4_p_a4 + (tt)*q1_p_a4; #local b1 = (1-tt)*q4_p_b1 + (tt)*q1_p_b1; #local b2 = (1-tt)*q4_p_b2 + (tt)*q1_p_b2; #local b3 = (1-tt)*q4_p_b3 + (tt)*q1_p_b3; #local b4 = (1-tt)*q4_p_b4 + (tt)*q1_p_b4; #local c1 = (1-tt)*q4_p_c1 + (tt)*q1_p_c1; #local c2 = (1-tt)*q4_p_c2 + (tt)*q1_p_c2; #local c3 = (1-tt)*q4_p_c3 + (tt)*q1_p_c3; #local c4 = (1-tt)*q4_p_c4 + (tt)*q1_p_c4; #local d1 = (1-tt)*q4_p_d1 + (tt)*q1_p_d1; #local d2 = (1-tt)*q4_p_d2 + (tt)*q1_p_d2; #local d3 = (1-tt)*q4_p_d3 + (tt)*q1_p_d3; #local d4 = (1-tt)*q4_p_d4 + (tt)*q1_p_d4; #end union{ object {carro(-1,a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, c4, d1, d2, d3, d4)} object {carro(1,a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, c4, d1, d2, d3, d4)} } #end #macro pico(tt) (sin(pi*tt) / (pi*tt+0.0001) * cos(pi*tt/4)) #end #macro interpola (tt, v1, v2, v3, v4) (pico (tt+1)*v1 + pico (tt)*v2 + pico (tt-1)*v3 +pico (tt-2)*v4) #end union{ cena_automovel(clock) } } // Original camera parameters: // #local cam_ctr = <0,0,0> // #local cam_loc = <14.00,7.00,7.00> // #local cam_vec = <14.00,7.00,7.00> // #local cam_sky = z #include "camlight.inc" camlight(<0,0,0>,6.00,<10,10,10>,18.00,z,1.2)