// Last edited on 2005-01-05 22:35:08 by stolfi // Processed by remove-cam-lights #include "colors.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare raio = 2.000; #declare tinta_cinza = texture { pigment { color rgb < 0.85, 0.85, 0.85 > } finish { diffuse 0.8 specular 0.2 roughness 0.05 ambient 0.1 } } #declare Glass = texture { pigment { White filter 1 } finish { diffuse 0.25 specular 0.2 roughness 0.001 ambient 0.1 reflection 0.25 } } #declare DarkGlass = texture { pigment { White filter 0.5 } finish { diffuse 0.25 specular 0.2 roughness 0.001 ambient 0.1 reflection 0.25 } } #declare ferro = texture { pigment { color rgbf < 0.40, 0.40, 0.40, 0.1 > } finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.1 } } #declare madeira = texture { pigment { color Brown } finish { diffuse 0.25 specular 0.5 roughness 0.005 ambient 0.1 } } #declare curva_trilho_int = difference { torus { 5, 0.1 rotate x*-90 texture{ ferro } } box { <-6,-6,-6>, <0,6,6> texture{ ferro } } } #declare trilho_int = union { object { curva_trilho_int translate 5*x } object { curva_trilho_int rotate 180*z translate -5*x } cylinder { <-5, 5, 0>, < 5, 5, 0>, 0.1 open texture { ferro } } cylinder { <-5, -5, 0>, < 5, -5, 0>, 0.1 open texture { ferro } } } #declare curva_trilho_ext = difference { torus { 6, 0.1 rotate x*-90 texture{ ferro } } box { <-7,-7,-7>, < 0, 7, 7> texture{ ferro } } } #declare trilho_ext = union { object { curva_trilho_ext translate 5*x } object { curva_trilho_ext rotate 180*z translate -5*x } cylinder { <-5, 6, 0>, < 5, 6, 0>, 0.1 open texture { ferro } } cylinder { <-5, -6, 0>, < 5, -6, 0>, 0.1 open texture { ferro } } } #declare placa_madeira = box { <-0.15, -6, -0.03>, < 0.15, -5, 0.03> texture { madeira } } #declare placas = union { #declare j=-5; #while (j <= 5) object { placa_madeira translate j*x } object { placa_madeira translate j*x translate 11*y } #declare j = j + 1; #end #declare j=0; #while (j <= 180) object { placa_madeira rotate j*z translate 5*x } object { placa_madeira rotate -j*z translate -5*x } #declare j = j + 18; #end } #declare trilho = union { object { trilho_int } object { trilho_ext } object { placas } } #declare roda = union { torus { 0.3, 0.08 texture{ ferro } } #declare i = 0; #while (i<360) cylinder { <-0.3, 0, 0>, < 0.3, 0, 0>, 0.04 texture { madeira } rotate i*y } #declare i = i + 45; #end } #declare vagoes = union { #declare gerador = seed(696969); #declare j = -5; #while (j <= 5) box { <-0.5, 0.15, 0>, <2.7, 1.15, 1> texture { pigment { color rgb } finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.1 } } translate j*x } #declare i = 0; #while (i<2.7) object { roda translate i*x translate j*x } object { roda translate i*x translate 1.5*y translate j*x } #declare i = i+0.8; #end #if (j>-5) cylinder { <-0.5, 0.65, 0.2>, <-1.5, 0.65, 0.2>, 0.1 texture { ferro } translate j*x } #end #declare j = j + 4; #end } #declare locomotiva = union { box { <-0.5, 0.15, 0>, <1.1, 1.15, 1> texture { pigment { color rgb } finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.1 } } } difference { cylinder { <1.0, 0.65, 0>, <2.1, 0.65, 0>, 0.5 texture { pigment { color rgb } finish { diffuse 0.8 specular 0.2 roughness 0.005 ambient 0.1 } } } box { <1, 0, 0>, <2, 2, -2> } } cylinder { <1.6, 0.65, 0.5>, <1.6, 0.65, 1.5>, 0.15 } #declare i = 0; #while (i<1.9) object { roda translate i*x } object { roda translate i*x translate 1.5*y } #declare i = i+0.8; #end #if (j>-5) cylinder { <-0.5, 0.65, 0.2>, <-1.5, 0.65, 0.2>, 0.1 texture { ferro } } #end } #declare trem = union { object { vagoes translate -6*y translate 0.38*z } object { locomotiva rotate 34*z translate -5.5*y translate 0.38*z translate 7.2*x } } union { object{ trilho } object{ trem } } #include "camlight.inc" camlight(<0.00,0.00,5.00>,<4.00,-25.00,7.00>,1.00,z,1.0)