/* TP04 */ #include "eixos.inc" #include "colors.inc" #include "textures.inc" #include "stones.inc" // Cores e texturas // ================ #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca2 = texture{ pigment{ color rgb < 0.70, 0.20, 0.30 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca3 = texture{ pigment{ color rgb < 0.30, 0.50, 0.40 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca4 = texture{ pigment{ color rgb < 0.15, 0.70, 0.35 > } finish{ diffuse 0.9 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.62, 0.20 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare roleta = seed(315); // Descricao da cena // ================= #macro quadro(tt) // Um parĂ£metro que varia {+1, 00, -1, 00, +1}: #declare ctt = cos(2*pi*tt); // Um parĂ¢metro que varia {00, +1, 00, -1, 00}: #declare stt = sin(2*pi*tt); //Angulo #declare att = abs(70*sin(8.9+2*pi+tt)); #declare chassi = union{ difference{ difference{ sphere{ <0,0,0>, 0.7 texture{tx_fosca}} sphere{ <0,0,0>, 0.6 } } box{ <0.3, -1, 0>, <2, 1, 0.3> } } sphere{ <0,0,0>, 0.6 texture{tx_vidro}} } #macro pe() box{<0.3, -0.15, -0.15>, <-0.1, 0.15, 0> texture{tx_fosca}} #end #macro anteperna(gama) union{ cylinder{<0, 0, 0>, <0,0,-0.7>, 0.1 texture {tx_fosca4}} sphere{<0,0,-0.7> 0.1 texture {tx_fosca4}} object{pe() rotate gama * y translate -0.7*z} } #end #macro perna(beta, gama) union{ cylinder{<0,0,0>, <0,0,-0.85>, 0.11 texture {tx_fosca2}} sphere{<0,0,-0.85> 0.11 texture {tx_fosca2}} object{anteperna(gama) rotate beta * y translate -0.85*z} } #end #macro bicho(alfa, beta, gama) union { object{chassi} sphere{<0,0,-0.7> 0.11 texture {tx_fosca}} object{perna(beta, gama) rotate alfa * y translate -0.7*z} } #end #macro interpola(ta, va, tb, vb, ttt) #declare s = (ttt - ta)/(tb - ta); ((1 - s) * va + s * vb) #end #declare t0 = 0; #declare t1 = 0.2; #declare t2 = 0.4; #declare t3 = 0.7; #declare t4 = 1; #declare alfa0 = -30; #declare alfa1 = -45; #declare alfa2 = 10; #declare alfa3 = 10; #declare alfa4 = -30; #declare beta0 = 120; #declare beta1 = 140; #declare beta2 = 10; #declare beta3 = 10; #declare beta4 = 120; #declare gama0 = -20; #declare gama1 = -30; #declare gama2 = 15; #declare gama3 = -15; #declare gama4 = -20; #declare h0 = 0.7; #declare h1 = 0.3; #declare h2 = 1; #declare h3 = 3; #declare h4 = 0.7; #if (tt >= t0 & tt < t1) #declare alf = interpola(t0, alfa0, t1, alfa1, tt); #declare bet = interpola(t0, beta0, t1, beta1, tt); #declare gam = interpola(t0, gama0, t1, gama1, tt); #declare h = interpola(t0, h0, t1, h1, tt); #end #if (tt >= t1 & tt < t2) #declare alf = interpola(t1, alfa1, t2, alfa2, tt); #declare bet = interpola(t1, beta1, t2, beta2, tt); #declare gam = interpola(t1, gama1, t2, gama2, tt); #declare h = interpola(t0, h0, t1, h1, tt); #end #if (tt >= t2 & tt < t3) #declare alf = interpola(t2, alfa2, t3, alfa3, tt); #declare bet = interpola(t2, beta2, t3, beta3, tt); #declare gam = interpola(t2, gama2, t3, gama3, tt); #declare h = interpola(t0, h0, t1, h1, tt); #end #if (tt >= t3 & tt < t4) #declare alf = interpola(t3, alfa3, t4, alfa4, tt); #declare bet = interpola(t3, beta3, t4, beta4, tt); #declare gam = interpola(t3, gama3, t4, gama4, tt); #declare h = interpola(t0, h0, t1, h1, tt); #end //Chao plane { z, -4.01 texture{tx_xadrez} } object{ eixos(3.00) } object{bicho(alf,bet,gam) translate h*z} #end quadro(clock) #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 6.0; #declare dir_camera = < 14.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)