// Vitor Sexto Bernardes - RA 010063 // Variaveis de controle #declare esp_nos_x = 7; #declare esp_nos_y = 6; // ====================================================================== // CÂMERA camera { location < clock*esp_nos_x, 27, 7+7*clock > // Posição do observador. right 1.0*x // Largura RELATIVA da imagem. up 0.75*y // Altura RELATIVA da imagem. sky z // Qual direção é "para cima"? look_at < esp_nos_x, esp_nos_y+1, 0.00 > // Para onde a câmera está apontando. } // Nota: os parâmetros "right" e "up" devem ter a mesma proporção // que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile. // ====================================================================== // FONTES DE LUZ light_source { 10 * < esp_nos_y, 20, 20 > // Posição da lâmpada. color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // DESCRIÇÃO DA CENA background { color rgb < 0, 0, 0 > } #declare tx_nos = texture { pigment { color rgb < 0.4, 0.4, 1> } } #declare tx_conexoes = texture { pigment { color rgb < 0.8, 0.8, 0.8 > } finish { metallic } } #declare nos = union { // Faz as linhas de fora #declare i=0; #while (i <= 1) #declare j=0; #while (j <= 2) sphere { , 1 texture { tx_nos } } #declare j=j+1; #end #declare i=i+1; #end // Faz a linha do meio #declare i=0; #while (i <= 1) sphere { , 1 texture { tx_nos } } #declare i=i+1; #end } #declare conexoes = union { #declare i=0; #while (i <= 1) cylinder { <0, esp_nos_y*2*i, 0>, , 0.2 texture { tx_conexoes } } #declare i=i+1; #end #declare i=0; #while (i <= 1) cylinder { , , 0.2 texture { tx_conexoes } } #declare i=i+1; #end #declare i=0; #while (i <= 1) cylinder { , , 0.2 texture { tx_conexoes } } #declare i=i+1; #end } #declare estrela = prism { linear_sweep linear_spline 0, 1, 9, <0, 4>, <1, 1>,<4, 0>,<1, -1>,<0, -4>,<-1, -1>,<-4, 0>,<-1, 1>,<0, 4> scale <0.2, 0.2, 0.2> rotate <0, 0, -30.25> } #declare cubo = box { <-0.5, -0.5, -0.5>, <0.5, 0.5, 0.5> } // CENA FINAL: object { nos } object { conexoes } #declare fonte = seed(1426); // Faz cubos #declare i=0; #while (i <= esp_nos_x * 2) #if (rand(fonte) < 0.3) #if (rand(fonte) < 0.5) // sorteia em qual tubo vai o pacote #declare tubo = esp_nos_y*2; // vai para o tubo de baixo #else #declare tubo = 0; // vai para o tubo de cima #end object { cubo #if (rand(fonte) < 0.5) // anda para a direita // para nao deixar os pacotes passarem do fim da rede #if (i + esp_nos_x*clock < 2*esp_nos_x) translate #else translate <2*esp_nos_x, tubo, 0> #end #else // anda para a esquerda // para nao deixar os pacotes passarem do fim da rede #if (i - esp_nos_x*clock > 0) translate #else translate <0, tubo, 0> #end #end pigment { color rgb } } #end #declare i=i+1; #end // Faz estrelas #declare i=0; #while (i <= 10) #if (rand(fonte) < 0.5) object { estrela // Sorteando qual o tubo para o qual vai a estrela #if (rand(fonte) < 0.5) #declare tubo=esp_nos_x; // tubo da direita #else #declare tubo=0; // tubo da esquerda #end // Anda para baixo, com velocidades variaveis // Nao deixa os pacotes passarem do fim da rede #if (i*(esp_nos_x/10)*clock + tubo < esp_nos_x + tubo) translate #else translate #end pigment { color rgb } } #end #declare i=i+1; #end