home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Raytrace & Morphing / SOS-RAYTRACE.ISO / programm / scripts / pov / st3 / toytrain.inc < prev    next >
Encoding:
Text File  |  1993-04-14  |  11.3 KB  |  372 lines

  1. //------ Toy Train 1993
  2.  
  3.  
  4. //-----  Gold Stack
  5. #declare stack1 = union {
  6.     intersection { Y_Disk scale <5 20 5> }
  7.     intersection { Y_Disk scale <8 10 8> translate <0 20 0>  }
  8. }
  9.  
  10. //----- Side Panels
  11. #declare side_panel = 
  12. object {
  13.    union {
  14.      intersection { Cube scale <65 35 2.5> translate <0 0 0> }
  15.      intersection { Cube scale <55 25 7.5> translate <0 0 0> }
  16.      intersection { Cube scale <85 10 2.5> translate <150 -5 0> }
  17.      intersection { Cube scale <25 6 7> translate <130 -50 1> }
  18.      intersection { Cube scale <10 17 7> translate <115 -38 1> }
  19.      intersection { Cube scale <60 2.5 2.5> translate <120 -22.5 0> } 
  20.    }
  21.     texture { bod_color5 }
  22.         bounded_by {
  23.         intersection { Cube scale <160 60 8> translate <85 -10 0> }
  24.         }
  25. }
  26.  
  27. //---- Spoke
  28. #declare spoke = intersection { X_Disk scale <84 5 4> translate <-42 0 0> }
  29.  
  30. //---- Large Wheel
  31. #declare wheel = 
  32. composite {
  33.  object {
  34.    union {
  35.      intersection { spoke rotate <0 0 0> }
  36.      intersection { spoke rotate <0 0 45> }
  37.      intersection { spoke rotate <0 0 90> }
  38.      intersection { spoke rotate <0 0 -45> }
  39.      intersection { Z_Disk scale <20 20 10> translate <0 0 -5> }
  40.      intersection { Z_Disk scale <10 10 10> translate <0 0 -8> }
  41.    }
  42.     texture { bod_color2 }
  43.        bounded_by {
  44.        intersection { Z_Disk scale <48 48 18> translate <0 0 -9> }
  45.        }
  46.  }
  47.  
  48.  object {
  49.    difference {
  50.      intersection { Z_Disk scale <45 45 12> translate <0 0 -6> }
  51.      quadric { Cylinder_Z  scale <40 40 1> }
  52.    }
  53.        texture { silver }
  54.     bounded_by {
  55.     intersection { Z_Disk scale <48 48 13> translate <0 0 -6.5> }
  56.     }
  57.  }
  58.       bounded_by {
  59.       intersection { Z_Disk scale <48 48 12> translate <0 0 -6> }
  60.       }
  61. }
  62.  
  63. //--- Small Wheel
  64. #declare s_wheel = composite { wheel scale <0.60 0.60 1> }
  65.  
  66. #declare cow = 
  67. intersection {
  68.     plane { <0.0 0.0 1.0> 1.0 }
  69.     plane { <0.0 0.0 -1.0> 1.1 }
  70.     plane { <0.0 -1.0 0.0> 1.0 }
  71.     plane { <1.0 0.0 0.0> 0.5 rotate <0 0 45> translate < 0 -0.5 0> rotate <-45 0 0>  }
  72.     plane { <-1.0 0.0 0.0> 0.5 rotate <0 0 -45> translate <0 -0.5 0> rotate <-45 0 0> }
  73. }
  74.  
  75. #declare cutter = intersection { Cube scale <1 5 20> }
  76. #declare dot_r = quadric { Sphere scale <5 5 5> }
  77.  
  78.  
  79. //--- Thick Gold Railing
  80. #declare thick_rail = 
  81. object {
  82.    union {
  83.      quadric { dot_r translate <0 0 0> }
  84.      quadric { dot_r translate <130 0 0> }
  85.      quadric { dot_r translate <130 -30 0> }
  86.      quadric { dot_r translate <300 -30 0> }
  87.      quadric { dot_r translate <350 -80 0> }
  88.      quadric { dot_r translate <370 -80 0> }
  89.      intersection { X_Disk scale <130 5 5> translate <0 0 0> }
  90.      intersection { X_Disk scale <170 5 5> translate <130 -30 0> }
  91.      intersection { Y_Disk scale <5 30 5> translate <130 -30 0> }
  92.      intersection { X_Disk scale <20 5 5> translate <350 -80 0> }
  93.      intersection { X_Disk scale <70 5 5> rotate <0 0 -45> translate <300 -30 0> }
  94.    }
  95.     texture { bod_color4 }
  96.       bounded_by {
  97.       intersection { Cube scale <200 70 10> translate <190 -35 0> }
  98.       }
  99. }
  100.  
  101.  
  102. #declare post = quadric { Sphere scale <4 4 8> }
  103.  
  104. #declare thin_rail = 
  105. object {
  106.    union {
  107.      quadric { post }
  108.      quadric { post translate <120 0 0> }
  109.      quadric { post translate <240 0 0> }
  110.      intersection { X_Disk scale <240 2 2> translate <0 0 -2> }
  111.    }
  112.     texture { bod_color4 }
  113.        bounded_by {
  114.        intersection { X_Disk scale <250 9 9> translate <-5 0 0> }
  115.        }
  116. }
  117.  
  118. //---- Wheel Mechanics
  119. #declare wheel_drive = 
  120. object {
  121.    union {
  122.      intersection { Z_Disk scale <7 7 12> translate <0 0 -4> }
  123.      intersection { Z_Disk scale <7 7 12> translate <130 0 -4> }
  124.      intersection { Z_Disk scale <7 7 12> translate <150 25 -4> }
  125.      intersection { Cube scale <65 3 2> translate <65 0 0> }
  126.      intersection { Cube scale <15 3 2> rotate <0 0 40> translate <140 10 0> }
  127.      intersection { Cube scale <55 3 2> translate <140 39 4> }
  128.    }
  129.     texture { silver }
  130.        bounded_by {
  131.        intersection { Cube scale <130 40 12> translate <120 20 0> }
  132.        }
  133. }
  134.  
  135.  
  136. //----- Complete Train
  137. composite {
  138.   composite {
  139.     composite { 
  140.     //---- trunk
  141.          object {
  142.       union {
  143.         intersection { X_Disk scale <240 50 50> translate <0 0 0> }
  144.         quadric { Sphere scale <30 30 20> translate <160 50 0> }
  145.         quadric { Sphere scale <30 30 20> translate <180 50 0> }
  146.         intersection { X_Disk scale <20 30 20> translate <160 50 0> }
  147.         intersection { Cube scale <120 3 55> translate <120 0 0> }
  148.       }
  149.            texture { bod_color1 }
  150.         bounded_by {
  151.         intersection { X_Disk scale <250 70 56> translate <-5 10 0> }
  152.         }
  153.     }
  154.  
  155.     //--- Brass ring
  156.     object {
  157.       union {
  158.          quadric { Sphere scale <5 55 55> translate <95 0 0> }
  159.          quadric { Sphere scale <5 55 55> translate <175 0 0> }
  160.          quadric { Sphere scale <5 55 55> translate <240 0 0> }
  161.          intersection { Cube scale <120 3 55> translate <120 0 0> }
  162.       }
  163.            texture { bod_color4 }
  164.         bounded_by {
  165.         intersection { X_Disk scale <250 70 56> translate <-5 10 0> }
  166.         }
  167.     }
  168.  
  169.      translate <-330 130 0> 
  170.     }
  171.     
  172.     //--- Top Cabin
  173.     composite {
  174.       object {
  175.          difference {
  176.         union {
  177.           intersection { Cube scale < 35 10 20> translate <75 90 0> }
  178.           intersection { X_Disk scale <150 93 93> translate <0 0 0> }
  179.         }
  180.               plane { <0 1 0> 60 }
  181.           }
  182.             texture { bod_color2 }
  183.       translate <-85 0 0>
  184.        }
  185.  
  186.       //---- Cabin     
  187.       object {
  188.         difference {
  189.           intersection { Cube scale <55 60 70> translate <0 0 0> }
  190.           intersection { Cube scale <10 20 80> translate <-35 30 0> }
  191.           intersection { Cube scale <30 20 80> translate <15 30 0> }
  192.           intersection { Cube scale <50 50 65> translate <0 5 0> }
  193.           intersection { Cube scale <40 20 80> translate <25 -60 0> }
  194.         }
  195.           texture { 
  196.              material_map { <1 -1 0> gif "tcabin.gif" 
  197.              texture { bod_color1 }
  198.              texture { bod_color2 }
  199.              texture { bod_color3 }
  200.              texture { bod_color4 }
  201.           }
  202.         scale <110 120 1> 
  203.         translate <-55 -60 -1>
  204.         phong 0.5 
  205.         phong_size 50 
  206.         diffuse 0.9
  207.            }
  208.             bounded_by {
  209.             intersection { Cube scale <80 80 80 > translate <-10 20 0> }
  210.             }
  211.     }
  212.     translate <-385 130 0> 
  213.         }
  214.  
  215.     object {
  216.       union {
  217.        intersection { X_Disk scale <80 50 50> translate <0 0 0> }
  218.        quadric { Sphere scale <5 55 55> translate <80 0 0> }
  219.        quadric { Sphere scale <10 45 45> translate <80 0 0> }
  220.        intersection { X_Disk scale <10 15 15> translate <87 0 0> }
  221.        quadric { Sphere scale <10 10 10> translate <70 60 0> }
  222.        intersection { X_Disk scale <20 10 10> translate <70 60 0> }
  223.        intersection { Y_Disk scale <15 20 15> translate <25 50 0> }
  224.        intersection { DCone scale <30 65 30> translate <25 40 0> }
  225.        intersection { Y_Disk scale <25 5 25> translate <25 70 0> }
  226.       }
  227.           texture { bod_color6 }
  228.              bounded_by {
  229.              intersection { Cube scale <60 95 60 > translate <50 30 0> }
  230.              }
  231.     translate <-90 130 0>
  232.     }
  233.  
  234.     //--- Train Frame
  235.     object {
  236.        union {
  237.          intersection { Cube scale <235 30 40> translate <0 0 0> }
  238.          intersection { Cube scale <25 40 80> translate <130 0 0> }
  239.          intersection { Cube scale <40 15 20> translate <-225 -25 0> }
  240.          intersection { Cube scale <15 30 85> translate <130 0 0> }
  241.          intersection { Cube scale <40 3 70> translate <195 0 0> }
  242.        }
  243.           texture { bod_color5 }
  244.         bounded_by {
  245.         intersection { Cube scale <270 60 90 > translate <0 0 0> }
  246.         }
  247.     translate <-200 60 0>
  248.     }
  249.  
  250.     //---- Stacks
  251.     object {
  252.       union {
  253.         union { stack1 translate <-285 210 0> }
  254.         union { stack1 translate <-245 190 0> }
  255.         union { stack1 translate <-225 190 0> }
  256.         union { stack1 scale <2 1 2> translate <-160 200 0> }
  257.             intersection { Y_Disk scale <15 40 15> translate <-285 170 0> }
  258.         quadric { Sphere scale <15 10 15> translate <-285 210 0> }
  259.         intersection { Y_Disk scale <20 20 20> translate <-235 170 0> }
  260.         intersection { Y_Disk scale <35 10 35> translate <-65 230 0> }
  261.         intersection { Y_Disk scale <25 10 25> translate <-65 240 0> }
  262.         intersection { X_Disk scale <10 10 10> translate <0 190 0> }
  263.       }
  264.            texture { bod_color4 }
  265.         bounded_by {
  266.         intersection { Cube scale <180 50 45> translate <-130 210 0> }
  267.         }
  268.     }
  269.  
  270.  
  271.  
  272.     object { side_panel translate <-265 105 -67.5> }
  273. //    object { side_panel translate <-265 105 67.5> }
  274.     composite { wheel translate <-280 45 -50> }
  275. //    composite { wheel translate <-280 45 50> }
  276.     composite { wheel translate <-150 45 -50> }
  277. //    composite { wheel translate <-150 45 50> }
  278.     composite { s_wheel translate <0 28 -50> }
  279. //    composite { s_wheel translate <0 28 50> }
  280.     object { thick_rail translate <-330 140 67.5> }
  281.     object { thick_rail translate <-330 140 -67.5> }
  282. //    object { thin_rail translate <-300 160 45> }
  283.     object { thin_rail translate <-300 160 -45> }
  284. //    object { wheel_drive translate <-270 30 67.5> }
  285.     object { wheel_drive translate <-270 30 -71.5> }
  286.  
  287.     composite {
  288.     //--- Cow Catcher
  289.     object {
  290.       difference {
  291.         intersection { cow scale <10 5 10> }
  292.         intersection { cutter translate <1.5 1 0> }
  293.         intersection { cutter translate <4.5 1 0> }
  294.         intersection { cutter translate <7.5 1 0> }
  295.         intersection { cutter translate <-1.5 1 0> }
  296.         intersection { cutter translate <-4.5 1 0> }
  297.         intersection { cutter translate <-7.5 1 0> }
  298.         intersection { cutter translate <-10.5 1 0> }
  299.         intersection { cutter translate <10.5 1 0> }
  300.         intersection { cow scale <10 5 10> translate <0 -0.5 2> }
  301.       }
  302.          texture { silver }
  303.         bounded_by { 
  304.         intersection { Cube scale <10 5 10> }
  305.         }
  306.     scale <4.8 5 4> translate <0 -10 -45>
  307.     }
  308.  
  309.     object { 
  310.        intersection { Cube scale <70 30 5> }
  311.        texture { bod_color5 }
  312.     }
  313.     rotate <0 -90 0> 
  314.     scale <0.7 1 1.1>  translate <43 45 0>
  315.     }
  316.  
  317.     object { 
  318.       quadric { Sphere scale <5 10.3 10.3> translate <10 130 0> }
  319.          texture { bod_color4 } 
  320.     }
  321.         bounded_by {
  322.         intersection { Cube scale <330 140 120> translate <-160 130 0> }
  323.         }
  324.  }
  325.     //--- Smoke
  326.     object { 
  327.      union {
  328.          quadric { Sphere scale <15 40 15> translate <0 0 0> }
  329.         quadric { Sphere scale <20 20 20> translate <0 30 0> }
  330.         quadric { Sphere scale <25 20 25> translate <-10 50 0> }
  331.         quadric { Sphere scale <30 25 30> translate <-40 60 0> }
  332.         quadric { Sphere scale <50 25 35> translate <-60 70 0> }
  333.         quadric { Sphere scale <170 25 40> translate <-90 80 0> }
  334.         quadric { Sphere scale <170 25 40> translate <-100 100 0> }
  335.         quadric { Sphere scale <50 10 30> translate <-120 110 0> }
  336.      }
  337.          texture {
  338.            bozo
  339.            turbulence 0.4
  340.            0.05
  341.         colour_map {
  342.           [0.0 0.1   colour red 1.0 green 1.0 blue 1.0 alpha 0.8
  343.               colour red 1.0 green 1.0 blue 1.0 alpha 0.9]        
  344.           [0.1 0.5   colour red 1.0 green 1.0 blue 1.0 alpha 0.9
  345.                  colour red 1.0 green 1.0 blue 1.0 alpha 0.8 ]
  346.           [0.5 1.001 colour red 1.0 green 1.0 blue 1.0 alpha 0.8
  347.                 colour red 1.0 green 1.0 blue 1.0 alpha 1.0]
  348.                }
  349.     rotate <0 0 90> scale <40 30 20>
  350.     }
  351.  
  352.              texture {
  353.         gradient <0 1 0> 
  354.         color_map {
  355.         [0.0 0.2 color White alpha 0.7 color White alpha 0.8]
  356.         [0.2 0.4 color White alpha 0.8 color White alpha 1.0]
  357.         [0.4 1.01 color White alpha 1.0 color White alpha 1.0]
  358.         }
  359.         scale <300 140 40> translate <0 -160 0>
  360.          }
  361.         bounded_by {
  362.         intersection { Cube scale <400 120 50> translate <-160 30 0> }
  363.         }
  364.     scale <1 1.2 1> translate <-65 265 0>
  365.      }
  366.     
  367.  
  368. scale <2 2 2>
  369. translate <-1170 20 800>
  370. }
  371.  
  372.