// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2003-09-04 15:25:26 by stolfi #include "colors.inc" // ====================================================================== // CÂMERA camera { location < 115.00, 20, 30 > // Posição do observador. right -1*x // Largura RELATIVA da imagem. up 0.5*y // Altura RELATIVA da imagem. sky z // Qual direção é "para cima"? look_at < 0.00, 0.00, 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 * < +50.0, +30.0, +50.0 > // Posição da lâmpada. color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 10 * < +50.0, -10.0, +10.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } #include "colors.inc" #declare gerador = seed(123456); // objetos #declare solo = plane { <0,0,1>, -3.81 pigment{color Green} } //Trilhos #declare trilho_reto = box{ <5,-40,-0.25>, <-5,40,0.25> pigment{Gray} translate<0,0,-3.8> } #declare disco = cylinder{ <0,0,0.25>, <0,0,-0.25> 40 pigment{color Gray} } #declare furo = cylinder{ <0,0,3>, <0,0,-3> 30 } #declare corte_esquerdo = box{ <100,-100,-9>, <-100,0,9> } #declare corte_direito = box{ <100,0,-5>, <-100,100,5> } #declare trilho_curva_direita = difference{ object{disco} object{furo} object{corte_esquerdo} translate<0,0,-3.8> } #declare trilho_curva_esquerda = difference{ object{disco} object{furo} object{corte_direito} translate<0,0,-3.8> } #declare trilho_circular = difference{ object{disco} object{furo} translate<0,0,-3.8> } //Janelas #declare janela_quadrada = box { <0.5,-0.5,-0.5>, <-0.5,0.5,0.5> } #declare corte_triangular = box { <0.8,-0.5,-1>, <-0.8,0.5,1> } #declare janela_triangular = difference { object{janela_quadrada translate<0,0,0.5>} object{corte_triangular translate<0,0.5,1> rotate x*26.5651 translate<0,0.5,0> } object{corte_triangular translate<0,-0.5,1> rotate x*-26.5651 translate<0,-0.5,0>} translate <0,0,-0.5> } #declare janela_circular = cylinder{ <0.5,0,0>, <-0.5,0,0> 0.5 } //Vagão #declare bloco = box{ <1.5,-4.5,-2.5>, <-1.5,4.5,2.5> pigment {rgb } } #declare roda = cylinder{ <0.5,0,0>, <-0.5,0,0> 1 } #declare link = box{ <0.25,-1,-0.25>, <-0.25, 1,0.25> pigment{color Gray} } #declare vagao = union { object{bloco} // Colocando as rodas com cores aleatórias // Variáveis de iteração dos loops #declare i=0; #declare j=0; // A Variável p define qual janela será colocada #declare p = 0; //Eixo X #declare a=1.5; #while(i<2) #if(a=1.5) #declare a = -1.5; #else #declare a = 1.5; #end #declare i = i + 1; //Eixo Y #declare b=-5.5; #declare j=0; #while(j<4) #declare b = b + 2.25; #declare j = j + 1; object{roda pigment {rgb } translate} #if(p=0) object{janela_circular pigment {rgb } translate} #end #if(p=1) object{janela_triangular pigment {rgb } translate} #end #if(p=2) object{janela_quadrada pigment {rgb } translate} #declare p = -1; #end #declare p = p + 1; #end #end } // Locomotiva #declare base = box{ <1.5,-4.5,-1>, <-1.5,4.5,1> pigment{color Blue} } #declare cabine = box{ <1.5,-1,-1.5>, <-1.5,1,1.5> pigment{color Gray} } #declare chamine = cylinder{ <0,0,-1>, <0,0,1> 1 open } #declare locomotiva = union{ object{base} object{cabine translate<0 ,-3.5,2.0>} object{chamine translate<0,-0.5,2.0> pigment{rgb }} object{chamine translate<0,2.5,2.0> pigment {rgb } } // Variáveis de iteração dos loops #declare i=0; #declare j=0; // Colocando as rodas com cores aleatórias //Eixo X #declare a=1.5; #while(i<2) #if(a=1.5) #declare a = -1.5; #else #declare a = 1.5; #end #declare i = i + 1; //Eixo Y #declare b=-5.5; #declare j=0; #while(j<4) #declare b = b + 2.25; #declare j = j + 1; object{roda pigment {rgb } translate} #end #end translate<0,0,-1.5> } //Trem #declare trem = union { object{locomotiva} object{link translate<0,-11,0>} object{vagao translate<0,-11,0>} object{link translate<0,-16.5,-2.5>} object{vagao translate<0,-22,0>} object{link translate<0,-27.5,-2.5>} object{vagao translate<0,-33,0>} object{link translate<0,-38.5,-2.5>} object{vagao translate<0,-44,0>} } //Estacao //Cena union{ #declare tt = clock*10; //#declare vv = 1; //#declare yy = 35*sin(6.28*tt*vv); //#declare xx = 35*cos(6.28*tt*vv); //#declare rot = 360*tt*vv; #if (tt < 2) #declare vv = 0.625*tt*tt; #else #if(tt < 8) #declare vv = 2.5 + 0.75*(tt-2); #else #declare vv = 10 - (0.625*((10-tt)*(10-tt))); #end #end #declare yy = 35*sin(6.28*(vv/10)); #declare xx = 35*cos(6.28*(vv/10)); #declare rot = 360*(vv/10); object{solo} object{trilho_circular} object{locomotiva rotate rot*z translate} //object{link rotate rot*(z-5) translate<(xx),(yy),-2.5>} //object{vagao rotate rot*(z-10) translate<(xx),(yy),-2.5> } //object{link } //object{vagao } //object{link } //object{vagao } //object{link } //object{vagao } //rotate z*-20 //translate<0,-20,0> }