home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 1995 January / pcw-0195.iso / polyray / dat / misc / drill.pi < prev    next >
Text File  |  1994-12-31  |  1KB  |  48 lines

  1. // Drill bit
  2. viewpoint {
  3.    from <0, 0, -20>
  4.    at   <0, 0, 0>
  5.    up   <0, 1, 0>
  6.    resolution 256, 256
  7.    angle 45
  8.    }
  9. background sky_blue
  10. light white, < 200, 100, -300>
  11. include "..\colors.inc"
  12.  
  13. // Use polynomial approximation to a helix as the surface of the drill bit
  14. define Helix
  15. object {
  16.      object { polynomial -(1/6) * x * z^3 + x * z + (1/2) * y * z^2 - y }
  17.    * object { box <-2, -2, 0>, <2, 2, 1.4142> }
  18.    * object { cylinder <0, 0, -0.01>, <0, 0, 1.5>, 2 }
  19.    bounding_box <-2, -2, 0>, <2, 2, 1.4142>
  20.    }
  21.  
  22. define Full_Turn_Helix
  23. object {
  24.      Helix
  25.    + Helix { translate <0, 0,   sqrt(2)> rotate <0, 0, 90> }
  26.    + Helix { translate <0, 0, 2*sqrt(2)> rotate <0, 0, 180> }
  27.    + Helix { translate <0, 0, 3*sqrt(2)> rotate <0, 0, 270> }
  28.    }
  29.  
  30. define drill_bit
  31. object {
  32.    (  Full_Turn_Helix
  33.     * (object { cone <0, 0, 0>, 0, <0, 0, 3>, 2 } +
  34.        object { cylinder <0, 0, 3>, <0, 0, 4*sqrt(2)+0.001>, 2 }))
  35.    + Full_Turn_Helix { translate <0, 0, 4*sqrt(2)> }
  36.    + Full_Turn_Helix { translate <0, 0, 8*sqrt(2)> }
  37.    + object { cylinder <0, 0, 12*sqrt(2)>, <0, 0, 25>, 2 }
  38.    + object { disc <0, 0, 12*sqrt(2)>, <0, 0, -1>, 2 }
  39.    + object { disc <0, 0, 25>, <0, 0, 1>, 2 }
  40.    }
  41.  
  42. drill_bit {
  43.    rotate <-90, 0, 0>
  44.    translate <0, -12, 8>
  45.    rotate <0, 0, 45>
  46.    shiny_red
  47.    }
  48.