home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4613 / shapes.inc < prev    next >
Text File  |  1980-01-12  |  3KB  |  160 lines

  1. // Real Ray Tracer
  2. // Taken from Persistence of Vision Raytracer
  3.  
  4. /*
  5.    This file contains the following standard declared shapes :
  6.      Ellipsoid,Sphere
  7.      Cylinder_X,Cylinder_Y,Cylinder_Z
  8.      QCone_X,QCone_Y,QCone_Z
  9.      Plane_YZ,Plane_XZ,Plane_XY
  10.      Paraboloid_X,Paraboloid_Y,Paraboloid_Z
  11.      Hyperboloid,Hyperboloid_Y
  12.      UnitBox,UnitCube
  13.      Disk_X,Disk_Y,Disk_Z
  14. */
  15.  
  16. #declare Ellipsoid = quadric {
  17.    <1.0 1.0 1.0>
  18.    <0.0 0.0 0.0>
  19.    <0.0 0.0 0.0>
  20.    -1.0
  21. }
  22. #declare Sphere = quadric {
  23.    <1.0 1.0 1.0>
  24.    <0.0 0.0 0.0>
  25.    <0.0 0.0 0.0>
  26.    -1.0
  27. }
  28.  
  29. #declare Cylinder_X = quadric {
  30.    <0.0 1.0 1.0>
  31.    <0.0 0.0 0.0>
  32.    <0.0 0.0 0.0>
  33.    -1.0
  34. }
  35.  
  36. #declare Cylinder_Y = quadric {
  37.    <1.0 0.0 1.0>
  38.    <0.0 0.0 0.0>
  39.    <0.0 0.0 0.0>
  40.    -1.0
  41. }
  42.  
  43. #declare Cylinder_Z = quadric {
  44.    <1.0 1.0 0.0>
  45.    <0.0 0.0 0.0>
  46.    <0.0 0.0 0.0>
  47.    -1.0
  48. }
  49.  
  50. #declare QCone_X = quadric {
  51.    <-1.0 1.0 1.0>
  52.    <0.0 0.0 0.0>
  53.    <0.0 0.0 0.0>
  54.     0.0
  55. }
  56.  
  57. #declare QCone_Y = quadric {
  58.    <1.0 -1.0 1.0>
  59.    <0.0  0.0 0.0>
  60.    <0.0  0.0 0.0>
  61.     0.0
  62. }
  63.  
  64. #declare QCone_Z = quadric {
  65.    <1.0 1.0 -1.0>
  66.    <0.0 0.0  0.0>
  67.    <0.0 0.0  0.0>
  68.     0.0
  69. }
  70.  
  71. #declare Cone_X = intersection {
  72.    object { QCone_X translate <1 0 0> }
  73.    slab { <1 0 0> -1 1 }
  74.    scale <1.0 0.5 0.5>
  75. }
  76.  
  77. #declare Cone_Y = intersection {
  78.    object { QCone_Y  translate <0 1 0> }
  79.    slab { <0 1 0> -1 1 }
  80.    scale <0.5 1.0 0.5>
  81. }
  82.  
  83. #declare Cone_Z = intersection {
  84.    object { QCone_Z translate <0 0 1> }
  85.    slab { <0 0 1> -1 1 }
  86.    scale <0.5 0.5 1.0>
  87. }
  88.  
  89. #declare Plane_YZ = plane { <1 0 0> 0 }
  90.  
  91. #declare Plane_XZ = plane { <0 1 0> 0 }
  92.  
  93. #declare Plane_XY = plane { <0 0 1> 0 }
  94.  
  95. /* y^2 + z^2 - x = 0 */
  96. #declare Paraboloid_X = quadric {
  97.    < 0.0  1.0  1.0>
  98.    < 0.0  0.0  0.0>
  99.    <-1.0  0.0  0.0>
  100.      0.0
  101. }
  102.  
  103. /* x^2 + z^2 - y = 0 */
  104. #declare Paraboloid_Y = quadric {
  105.    <1.0  0.0  1.0>
  106.    <0.0  0.0  0.0>
  107.    <0.0 -1.0  0.0>
  108.     0.0
  109. }
  110.  
  111. /* x^2 + y^2 - z = 0 */
  112. #declare Paraboloid_Z = quadric {
  113.    <1.0  1.0  0.0>
  114.    <0.0  0.0  0.0>
  115.    <0.0  0.0 -1.0>
  116.     0.0
  117. }
  118.  
  119. /* y - x^2 + z^2 = 0 */
  120. #declare Hyperboloid = quadric {
  121.    <-1.0  0.0  1.0>
  122.    < 0.0  0.0  0.0>
  123.    < 0.0  1.0  0.0>
  124.      0.0
  125. }
  126.  
  127. #declare Hyperboloid_Y = quadric {  /* Vertical hyperboloid */
  128.    <1.0 -1.0  1.0>          /*                      */
  129.    <0.0  0.0  0.0>          /*            \   /     */
  130.    <0.0  0.0  0.0>          /* Like this:  ) (      */
  131.    -1.0                     /*            /   \     */
  132. }
  133.  
  134. #declare UnitBox = box { <-0.5 -0.5 -0.5> <0.5 0.5 0.5> }
  135.  
  136. #declare UnitCube = intersection {
  137.   intersection {
  138.     slab { <1.0 0.0 0.0> -0.5 0.5 }
  139.     slab { <0.0 1.0 0.0> -0.5 0.5 }
  140.   }
  141.   slab { <0.0 0.0 1.0> -0.5 0.5 }
  142. }
  143.  
  144. #declare Disk_X = intersection {       /* Capped cylinder, Length in x axis */
  145.    Cylinder_X
  146.    slab { <1.0 0.0 0.0> -1.0 1.0 }
  147. }
  148.  
  149. #declare Disk_Y = intersection {       /* Capped cylinder, Length in y axis */
  150.    Cylinder_Y
  151.    slab { <0.0 1.0 0.0> -1.0 1.0 }
  152. }
  153.  
  154. #declare Disk_Z = intersection {       /* Capped cylinder, Length in z axis */
  155.    Cylinder_Z
  156.    slab { <0.0 0.0 1.0> -1.0 1.0 }
  157. }
  158.  
  159. end.
  160.