// Exercicio 5 - MC930 // Nilton Volpato - RA 003243 // Supormercado #include "colors.inc" #include "textures.inc" #include "woods.inc" #include "stones.inc" #include "povlisa.inc" #include "virus.inc" #include "macacomecanico.inc" #include "bombamesa.inc" background { color LightBlue } //---------------------------------------------- // Luzes, Câmeras, ... light_source { < 15.00, 20.00, -40.00 > color rgb < 1, 1, 1 > } camera { // location < 5, 10, -30 > // location < 10, 15, -30 > location <12,20,-50> // final? right <1.5,0,0> up <0,.5,0> look_at <0,0,10> } //---------------------------------------------- // Cores e Texturas #declare cor_estante = texture { T_Wood35 } //---------------------------------------------- // Objetos // Estante #declare larg_estante = 1; #declare alt_estante = 20; #declare prof_estante = 500; #declare larg_prateleira = 5; #declare alt_prateleira = 1; #declare num_prateleiras = 3; #declare deltap = alt_estante/(num_prateleiras+1); #declare estante = union { box { <-larg_estante/2,0,0>, } #declare i=0; #while (i, } #declare i=i+deltap; #end texture { cor_estante } } #declare seed_rot = seed(99887722); // Produtos // Produto 1 : Cubo #declare prod1 = sphere { <0,2,0>, 1.5 texture { pigment { color Red } } } // num_prateleira começa em 1 (inferior) // lado 1 : direita, -1 : esquerda #macro prod1m(num_prateleira, lado, posz) object { prod1 translate <2+larg_estante, num_prateleira*deltap+alt_prateleira, posz> #if (lado = -1) scale <-1,1,1> #end } #end // Produto 2 : Bola #declare prod2 = box { <-1.5,0,-1.5>,<1.5,3,1.5> texture { pigment { color Green } } } #macro prod2m(num_prateleira, lado, posz) object { prod2 rotate <0,90*rand(seed_rot),0> translate <2+larg_estante, num_prateleira*deltap+alt_prateleira, posz> #if (lado = -1) scale <-1,1,1> #end } #end // Produto 3 : PovLisa #macro prod3m(num_prateleira, lado, posz) object { povlisa rotate <0,-90*rand(seed_rot),0> scale <.35,.35,.35> translate <0,2,0> translate <2+larg_estante, num_prateleira*deltap+alt_prateleira, posz> #if (lado = -1) scale <-1,1,1> #end } #end // Produto 4 : Macaco Mecânico #macro prod4m(num_prateleira, lado, posz) object { macaco_mecanico rotate <0,90*rand(seed_rot),0> scale <.25,.2,.25> translate <0,2,0> translate <2+larg_estante, num_prateleira*deltap+alt_prateleira, posz> #if (lado = -1) scale <-1,1,1> #end } #end // Produto 5 : Vírus da Inflação #macro prod5m(num_prateleira, lado, posz) object { virus_inflacao scale <.2,.2,.2> translate <0,2,0> translate <2+larg_estante, num_prateleira*deltap+alt_prateleira, posz> #if (lado = -1) scale <-1,1,1> #end } #end // Produto 6 : Bomba Atômica de Mesa #macro prod6m(num_prateleira, lado, posz) object { bomba scale <.2,.2,.2> translate <0,2,0> translate <2+larg_estante, num_prateleira*deltap+alt_prateleira, posz> #if (lado = -1) scale <-1,1,1> #end } #end #declare num_prod=6; #declare seed_prod = seed(123455); #macro prod_aleatorio(num_prateleira, lado, posz) #local i = floor(num_prod*rand(seed_prod)); #switch (i) #case (0) prod1m(num_prateleira, lado, posz) #break #case (1) prod2m(num_prateleira, lado, posz) #break #case (2) prod3m(num_prateleira, lado, posz) #break #case (3) prod4m(num_prateleira, lado, posz) #break #case (4) prod5m(num_prateleira, lado, posz) #break #case (5) prod6m(num_prateleira, lado, posz) #break #end #end //---------------------------------------------- // Cena #declare limesq_est = -6; #declare limdir_est = 3; //#declare limesq_est = 0; //#declare limdir_est = 0; #while ( limesq_est <= limdir_est ) union { object { estante } #declare posz = 2; #while (posz < prof_estante) #declare nump = 1; #while (nump <= num_prateleiras) // coloca produto do lado direito prod_aleatorio(nump, 1, posz) // coloca produto do lado esquerdo prod_aleatorio(nump,-1,posz) #declare nump=nump+1; #end #declare posz = posz+5; #end translate } #declare limesq_est = limesq_est+1; #end plane { y, -10 texture { T_Grnt1 } //pigment { checker color Black color White scale 5 } }