home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / graphics / ftpovscn / 0 / helix.pov < prev    next >
Text File  |  1994-07-27  |  3KB  |  159 lines

  1. // Persistence Of Vision raytracer version 1.0 sample file.
  2.  
  3. // Sample quartic { file
  4. // by Alexander Enzmann
  5.  
  6. #include "shapes.inc"
  7. #include "colors.inc"
  8. #include "textures.inc"
  9. #include "shapesq.inc"
  10.  
  11. /*
  12.    Approximation to the helix z = arctan(y/x).
  13.  
  14.    The helix can be approximated with an algebraic equation (kept to the
  15.    range of a quartic) with the following steps:
  16.  
  17.       tan(z) = y/x   =>  sin(z)/cos(z) = y/x   =>
  18.  
  19.    (1) x sin(z) - y cos(z) = 0
  20.  
  21.    Using the taylor expansions for sin, cos about z = 0,
  22.  
  23.       sin(z) = z - z^3/3! + z^5/5! - ...
  24.       cos(z) = 1 - z^2/2! + z^6/6! - ...
  25.  
  26.    Throwing out the high order terms, the expression (1) can be written as:
  27.  
  28.       x (z - z^3/6) - y (1 + z^2/2) = 0, or
  29.  
  30.   (2) -1/6 x z^3 + x z + 1/2 y z^2 - y = 0
  31.  
  32.   This helix (2) turns 90 degrees in the range 0 <= z <= sqrt(2)/2.  By using
  33.   scale <2 2 2>, the helix defined below turns 90 degrees in the range
  34.   0 <= z <= sqrt(2) = 1.4042.
  35. */
  36.  
  37. #declare Red_Helix =
  38. object { Helix
  39.    texture {
  40.       /* gradient <0 1 0>
  41.         color_map
  42.            [0 1.001 color red 1 green 0 blue 0 color red 0 green 1 blue 0]
  43.         end_color_map */
  44.       color red 1 green 0 blue 0
  45.       /* scale <1 1.4142 1> */
  46.       phong 1.0
  47.    }
  48. /*
  49.    bounded_by {
  50.       sphere { <0 0 0> 2.5 }
  51.       quadric { Cylinder_Z scale <2.0 2.0 2.0> }
  52.    }
  53. */
  54. }
  55.  
  56. #declare Green_Helix =
  57. object { Helix
  58.    texture {
  59.       /*gradient <0 1 0>
  60.        color_map
  61.           [0 1.001 color red 0 green 1 blue 0 color red 1 green 0 blue 0]
  62.        end_color_map */
  63.       color red 0 green 1 blue 0
  64.       /* scale <1 1.4142 1> */
  65.       phong 1.0
  66.    }
  67. /*
  68.    bounded_by {
  69.       sphere { <0 0 0> 2.5 }
  70.       quadric { Cylinder_Z scale <2.0 2.0 2.0> }
  71.    }
  72. */
  73. }
  74.  
  75. // Glue a bunch of pieces together to make one long helix. 
  76.  
  77. object { Green_Helix
  78.    translate <0 0 -4.2426>
  79.    rotate <0 0 160>
  80.    rotate <-90 0 0>
  81.    translate <0 -2 5>
  82. }
  83.  
  84. object { Red_Helix
  85.    translate <0 0 -2.8284>
  86.    rotate <0 0 70>
  87.    rotate <-90 0 0>
  88.    translate <0 -2 5>
  89. }
  90.  
  91. object { Green_Helix
  92.    translate <0 0 -1.4142>
  93.    rotate <0 0 160>
  94.    rotate <-90 0 0>
  95.    translate <0 -2 5>
  96. }
  97.  
  98. object { Red_Helix
  99.    rotate <0 0 70>
  100.    rotate <-90 0 0>
  101.    translate <0 -2 5>
  102. }
  103.  
  104. object { Green_Helix
  105.    translate <0 0 1.4142>
  106.    rotate <0 0 160>
  107.    rotate <-90 0 0>
  108.    translate <0 -2 5>
  109. }
  110.  
  111. object { Red_Helix
  112.    translate <0 0 2.8284>
  113.    rotate <0 0 70>
  114.    rotate <-90 0 0>
  115.    translate <0 -2 5>
  116. }
  117.  
  118. object { Green_Helix
  119.    translate <0 0 4.2426>
  120.    rotate <0 0 160>
  121.    rotate <-90 0 0>
  122.    translate <0 -2 5>
  123. }
  124.  
  125. object { Red_Helix
  126.    translate <0 0 5.6569>
  127.    rotate <0 0 70>
  128.    rotate <-90 0 0>
  129.    translate <0 -2 5>
  130. }
  131.  
  132. object { Green_Helix
  133.    translate <0 0 7.0711>
  134.    rotate <0 0 160>
  135.    rotate <-90 0 0>
  136.    translate <0 -2 5>
  137. }
  138.  
  139.  
  140. camera {
  141.    location <0.0  0.0 -10.0>
  142.    direction <0.0 0.0 1.0>
  143.    up        <0.0 1.0 0.0>
  144.    right     <1.333 0.0 0.0>
  145. }
  146.  
  147. // Toss in a couple of light sources. 
  148. object {
  149.    light_source { <200 100 -300>
  150.       colour red 1.0 green 1.0 blue 1.0
  151.    }
  152. }
  153.  
  154. object {
  155.    light_source { <-200 100 -300>
  156.       colour red 1.0 green 1.0 blue 1.0
  157.    }
  158. }
  159.