home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Raytrace & Morphing / SOS-RAYTRACE.ISO / programm / raytrace / rayce27 / shapes.inc < prev    next >
Encoding:
Text File  |  1994-01-16  |  14.5 KB  |  293 lines

  1. // Shapes include
  2. // mimicked from PoV's
  3.  
  4.  
  5. #declare Cylinder_X = quadric { <0, 1, 1>, <0, 0, 0>, <0, 0, 0>, -1  }
  6. #declare Cylinder_Y = quadric { Cylinder_X rotate <0, 0, 90>  }
  7. #declare Cylinder_Z = quadric { Cylinder_X rotate <0, 90, 0>  }
  8.  
  9. #declare Disk_X = intersection {
  10.   plane { <-1, 0, 0>, 1 }
  11.   plane { <1, 0, 0>, 1 }
  12.   quadric { Cylinder_X }
  13. }
  14.  
  15. #declare X_Disk = intersection {
  16.   Disk_X
  17.   translate <1, 0, 0>
  18.   scale <0.5, 1, 1>
  19. }
  20.  
  21. #declare Disk_Y = intersection {
  22.   Disk_X
  23.   rotate <0, 0, 90>
  24. }
  25.  
  26. #declare Y_Disk = intersection {
  27.   Disk_Y
  28.   translate <0, 1, 0>
  29.   scale <1, 0.5, 1>
  30. }
  31.  
  32. #declare Disk_Z = intersection {
  33.   Disk_X
  34.   rotate <0, 90, 0>
  35. }
  36.  
  37. #declare Z_Disk = intersection {
  38.   Disk_Z
  39.   translate <0, 0, 1>
  40.   scale <1, 1, 0.5>
  41. }
  42.  
  43. #declare QCone_X = quadric {
  44.    <-1, 1, 1>,
  45.    <0, 0, 0>,
  46.    <0, 0, 0>, 0  }
  47.  
  48. #declare QCone_Y = quadric { <1, -1, 1>, <0, 0, 0>, <0, 0, 0>, 0  }
  49.  
  50. #declare QCone_Z = quadric { <1, 1, -1>, <0, 0, 0>, <0, 0, 0>, 0  }
  51.  
  52. #declare  Hexagon = intersection {
  53.    plane { <0, 0, 1>, 1 }
  54.    rotate <60, 0, 0>
  55.    plane { <0, 0, 1>, 1 }
  56.    rotate <60, 0, 0>
  57.    plane { <0, 0, 1>, 1 }
  58.    rotate <60, 0, 0>
  59.    plane { <0, 0, 1>, 1 }
  60.    rotate <60, 0, 0>
  61.    plane { <0, 0, 1>, 1 }
  62.    rotate <60, 0, 0>
  63.    plane { <0, 0, 1>, 1 }
  64.    plane { <1, 0, 0> ,1 }
  65.    plane { <-1, 0, 0> ,1 }
  66. }
  67.  
  68. #declare  Ellipsoid = quadric {
  69.   <1, 1 ,1>, <0, 0 ,0>, <0, 0, 0>, -1 closed
  70. }
  71.  
  72. #declare Cube = box { <-1, -1, -1>, <1, 1, 1> }
  73.  
  74. #declare Tetrahedron = intersection{
  75.     plane { <0.577350, 0.577350, -0.577350>, 0.577350 }
  76.     plane { -<-0.577350, 0.577350, -0.577350>, 0.577350 }
  77.     plane { <-0.577350, 0.577350, 0.577350>, 0.577350 }
  78.     plane { -<0.577350, 0.577350, 0.577350>, 0.577350 }
  79. }
  80.  
  81. #declare CTetrahedron = composite {
  82.     polygon { <1,  1,  1>, < 1, -1, -1>, <-1,  1, -1> }
  83.     polygon { <1,  1,  1>, < 1, -1, -1>, <-1, -1,  1> }
  84.     polygon { <1,  1,  1>, <-1,  1, -1>, <-1, -1,  1> }
  85.     polygon { <1, -1, -1>, <-1,  1, -1>, <-1, -1,  1> }
  86. }
  87.  
  88.  
  89. #declare Octahedron = composite {
  90.   plane { <0.577350, 0.577350, 0.577350>, 0.577350 }
  91.   plane { -<-0.577350, -0.577350, 0.577350>, 0.577350 }
  92.   plane { -<-0.577350, 0.577350, -0.577350>, 0.577350 }
  93.   plane { <0.577350, -0.577350, -0.577350>, 0.577350 }
  94.   plane { -<0.577350, -0.577350, -0.577350>, 0.577350 }
  95.   plane { <-0.577350, 0.577350, -0.577350>, 0.577350 }
  96.   plane { <-0.577350, -0.577350, 0.577350>, 0.577350 }
  97.   plane { -<0.577350, 0.577350, 0.577350>, 0.577350 }
  98. }
  99.  
  100. #declare COctahedron = composite {
  101.     polygon { < 1, 0, 0>, <0,  1, 0>, <0, 0,  1> }
  102.     polygon { < 1, 0, 0>, <0,  1, 0>, <0, 0, -1> }
  103.     polygon { < 1, 0, 0>, <0, -1, 0>, <0, 0,  1> }
  104.     polygon { < 1, 0, 0>, <0, -1, 0>, <0, 0, -1> }
  105.     polygon { <-1, 0, 0>, <0,  1, 0>, <0, 0,  1> }
  106.     polygon { <-1, 0, 0>, <0,  1, 0>, <0, 0, -1> }
  107.     polygon { <-1, 0, 0>, <0, -1, 0>, <0, 0,  1> }
  108.     polygon { <-1, 0, 0>, <0, -1, 0>, <0, 0, -1> }
  109. }
  110.  
  111. #declare Cubeoctahedron = intersection {
  112.     plane { <0.577350, 0.577350, 0.577350>,  1.154701 }
  113.     plane { -<0.577350, -0.577350, -0.577350>,  1.154701 }
  114.     plane { -<-0.577350, 0.577350, -0.577350>,  1.154701 }
  115.     plane { <-0.577350, -0.577350, 0.577350>,  1.154701 }
  116.     plane { -<0.577350, 0.577350, 0.577350>,  1.154701 } 
  117.     plane { <0.577350, -0.577350, -0.577350>,  1.154701 }
  118.     plane { <-0.577350, 0.577350, -0.577350>,  1.154701 }
  119.     plane { -<-0.577350, -0.577350, 0.577350>, 1.154701 }
  120.     plane { <0.000000, 1.000000, 0.000000>,  1.000000 }
  121.     plane { <0.000000, 0.000000, 1.000000>,  1.000000 }
  122.     plane { -<0.000000, 1.000000, 0.000000>,  1.000000 } 
  123.     plane { -<0.000000, -0.000000, 1.000000>, 1.000000 }
  124.     plane { <1.000000, 0.000000, 0.000000>,  1.000000 }
  125.     plane { -<1.000000, 0.000000, 0.000000>,  1.000000 }
  126. }
  127.  
  128. #declare CCubeoctahedron = composite {
  129.     polygon { < 0,  1,  1>, < 1,  0,  1>, < 1,  1,  0> }
  130.     polygon { < 0,  1,  1>, <-1,  0,  1>, <-1,  1,  0> }
  131.     polygon { < 0, -1,  1>, < 1,  0,  1>, < 1, -1,  0> }
  132.     polygon { < 0, -1,  1>, <-1,  0,  1>, <-1, -1,  0> }
  133.     polygon { < 0, -1, -1>, <-1,  0, -1>, <-1, -1,  0> }
  134.     polygon { < 0, -1, -1>, < 1,  0, -1>, < 1, -1,  0> }
  135.     polygon { < 0,  1, -1>, <-1,  0, -1>, <-1,  1,  0> }
  136.     polygon { < 0,  1, -1>, < 1,  0, -1>, < 1,  1,  0> }
  137.     polygon { < 0,  1,  1>, < 1,  1,  0>, < 0,  1, -1>, <-1,  1,  0> }
  138.     polygon { < 0,  1,  1>, <-1,  0,  1>, < 0, -1,  1>, < 1,  0,  1> }
  139.     polygon { < 0, -1,  1>, < 1, -1,  0>, < 0, -1, -1>, <-1, -1,  0> }
  140.     polygon { < 0, -1, -1>, < 1,  0, -1>, < 0,  1, -1>, <-1,  0, -1> }
  141.     polygon { < 1,  0,  1>, < 1, -1,  0>, < 1,  0, -1>, < 1,  1,  0> }
  142.     polygon { <-1,  0,  1>, <-1, -1,  0>, <-1,  0, -1>, <-1,  1,  0> }
  143. }
  144.  
  145. #declare Icosahedron = intersection {
  146.     plane { -<-0.000000, -0.356821, -0.934173>,  1.511520 }
  147.     plane { <0.577350, 0.577350, 0.577350>,  1.511520 }
  148.     plane { -<-0.934173, -0.000000, -0.356821>, 1.511520 }
  149.     plane { -<-0.577350, 0.577350, -0.577350>,  1.511520 }
  150.     plane { <0.000000, -0.356821, 0.934173>,  1.511520 }
  151.     plane { <-0.577350, -0.577350, 0.577350>,  1.511520 }
  152.     plane { <-0.934173, 0.000000, 0.356821>,  1.511520 }
  153.     plane { -<0.577350, -0.577350, -0.577350>,  1.511520 }
  154.     plane { <-0.356821, 0.934173, 0.000000>,  1.511520 }
  155.     plane { -<-0.356821, -0.934173, -0.000000>, 1.511520 }
  156.     plane { -<0.356821, 0.934173, 0.000000>,  1.511520 }
  157.     plane { <0.356821, -0.934173, 0.000000>,  1.511520 }
  158.     plane { <0.000000, 0.356821, -0.934173>,  1.511520 }
  159.     plane { -<-0.577350, -0.577350, 0.577350>, 1.511520 }
  160.     plane { <0.934173, 0.000000, -0.356821>,  1.511520 }
  161.     plane { <0.577350, -0.577350, -0.577350>,  1.511520 }
  162.     plane { -<0.000000, 0.356821, 0.934173>,  -1.511520 }
  163.     plane { -<0.577350, 0.577350, 0.577350>,  -1.511520 }
  164.     plane { -<0.934173, 0.000000, 0.356821>,  -1.511520 }
  165.     plane { <-0.577350, 0.577350, -0.577350>,  1.511520 }
  166. }
  167.  
  168. #declare CIcosahedron = composite {
  169.     polygon { < 0,  1.61803,  1>, < 1,  0,  1.61803>, <-1,  0, 1.61803> }
  170.     polygon { < 0,  1.61803,  1>, < 1,  0,  1.61803>, < 1.61803,  1, 0> }
  171.     polygon { < 1,  0,  1.61803>, < 1.61803,  1,  0>, < 1.61803, -1, 0> }
  172.     polygon { < 0, -1.61803,  1>, < 1,  0,  1.61803>, < 1.61803, -1, 0> }
  173.     polygon { < 0, -1.61803,  1>, < 1,  0,  1.61803>, <-1,  0, 1.61803> }
  174.     polygon { < 0, -1.61803,  1>, <-1,  0,  1.61803>, <-1.61803, -1, 0> }
  175.     polygon { <-1,  0,  1.61803>, <-1.61803,  1,  0>, <-1.61803, -1, 0> }
  176.     polygon { < 0,  1.61803,  1>, <-1,  0,  1.61803>, <-1.61803,  1, 0> }
  177.     polygon { < 0,  1.61803,  1>, < 0,  1.61803, -1>, <-1.61803,  1, 0> }
  178.     polygon { < 0,  1.61803,  1>, < 0,  1.61803, -1>, < 1.61803,  1, 0> }
  179.     polygon { < 0, -1.61803,  1>, < 0, -1.61803, -1>, <-1.61803, -1, 0> }
  180.     polygon { < 0, -1.61803,  1>, < 0, -1.61803, -1>, < 1.61803, -1, 0> }
  181.     polygon { < 0,  1.61803, -1>, < 1,  0, -1.61803>, <-1, 0, -1.61803> }
  182.     polygon { < 0,  1.61803, -1>, < 1,  0, -1.61803>, < 1.61803,  1, 0> }
  183.     polygon { < 1,  0, -1.61803>, < 1.61803,  1,  0>, < 1.61803, -1, 0> }
  184.     polygon { < 0, -1.61803, -1>, < 1,  0, -1.61803>, < 1.61803, -1, 0> }
  185.     polygon { < 0, -1.61803, -1>, < 1,  0, -1.61803>, <-1, 0, -1.61803> }
  186.     polygon { < 0, -1.61803, -1>, <-1,  0, -1.61803>, <-1.61803, -1, 0> }
  187.     polygon { <-1,  0, -1.61803>, <-1.61803,  1,  0>, <-1.61803, -1, 0> }
  188.     polygon { < 0,  1.61803, -1>, <-1,  0, -1.61803>, <-1.61803,  1, 0> }
  189. }
  190.  
  191. #declare Dodecahedron = intersection {
  192.     plane { <0.525729, 0.000000, 0.850652>, 1.376381 }
  193.     plane { <-0.000003, 0.850652, 0.525730>, 1.376378 }
  194.     plane { <-0.525730, -0.000003, 0.850652>, 1.376378 }
  195.     plane { <0.000003, -0.850652, 0.525730>, 1.376378 }
  196.     plane { <0.525729, 0.000000, -0.850652>, 1.376381 }
  197.     plane { <-0.000003, -0.850652, -0.525730>, 1.376378 }
  198.     plane { <-0.525730, 0.000003, -0.850652>, 1.376378 }
  199.     plane { -<0.000003, -0.850652, 0.525730>, 1.376378 }
  200.     plane { -<-0.850652, 0.525729, 0.000000>, 1.376381 }
  201.     plane { <0.850652, 0.525729, 0.000000>, 1.376381 }
  202.     plane { -<0.850652, -0.525729, 0.000000>, 1.376381 }
  203.     plane { <-0.850652, -0.525729, -0.000000>, 1.376381 }
  204. }
  205.  
  206. #declare CDodecahedron = composite {
  207.     polygon { <0, 0.618034, 1.61803>, <0, -0.618034, 1.61803>, <1, -1, 1>, <1.61803, 0, 0.618034>, <1, 1, 1> }
  208.     polygon { <0, 0.618034, 1.61803>, <1, 1, 1>, <0.618034, 1.61803, 0>, <-0.618034, 1.61803, 0>, <-1, 1, 1> }
  209.     polygon { <0, 0.618034, 1.61803>, <-1, 1, 1>, <-1.61803, 0, 0.618034>, <-1, -1, 1>, <0, -0.618034, 1.61803> }
  210.     polygon { <0, -0.618034, 1.61803>, <-1, -1, 1>, <-0.618034, -1.61803, 0>, <0.618034, -1.61803, 0>, <1, -1, 1> }
  211.     polygon { <0, -0.618034, -1.61803>, <0, 0.618034, -1.61803>, <1, 1, -1>, <1.61803, 0, -0.618034>, <1, -1, -1> }
  212.     polygon { <0, -0.618034, -1.61803>, <1, -1, -1>, <0.618034, -1.61803, 0>, <-0.618034, -1.61803, 0>, <-1, -1, -1> }
  213.     polygon { <0, -0.618034, -1.61803>, <-1, -1, -1>, <-1.61803, 0, -0.618034>, <-1, 1, -1>, <0, 0.618034, -1.61803> }
  214.     polygon { <0, 0.618034, -1.61803>, <1, 1, -1>, <0.618034, 1.61803, 0>, <-0.618034, 1.61803, 0>, <-1, 1, -1> }
  215.     polygon { <1.61803, 0, 0.618034>, <1.61803, 0, -0.618034>, <1, -1, -1>, <0.618034, -1.61803, 0>, <1, -1, 1> }
  216.     polygon { <1.61803, 0, 0.618034>, <1.61803, 0, -0.618034>, <1, 1, -1>, <0.618034, 1.61803, 0>, <1, 1, 1> }
  217.     polygon { <-1.61803, 0, 0.618034>, <-1.61803, 0, -0.618034>, <-1, 1, -1>, <-0.618034, 1.61803, 0>, <-1, 1, 1> }
  218.     polygon { <-1.61803, 0, 0.618034>, <-1.61803, 0, -0.618034>, <-1, -1, -1>, <-0.618034, -1.61803, 0>, <-1, -1, 1> }
  219. }
  220.  
  221. #declare Icosidodecahedron = intersection {
  222.   plane {  <0.934171, 0.000000, 0.356825>, 1.868342 }
  223.   plane {  -<-0.934171, 0.000000, 0.356825>, 1.868342 }
  224.   plane {  -<0.934171, 0.000000, -0.356825>, 1.868342 }
  225.   plane {  <-0.934171, -0.000000, -0.356825>, 1.868342 }
  226.   plane {  <0.356825, 0.934171, 0.000000>, 1.868342 }
  227.   plane {  -<0.356825, -0.934171, 0.000000>, 1.868342 }
  228.   plane {  -<-0.356825, 0.934171, 0.000000>, 1.868342 }
  229.   plane {  <-0.356825, -0.934171, -0.000000>, 1.868342 }
  230.   plane {  <0.000000, 0.356825, 0.934171>, 1.868342 }
  231.   plane {  -<0.000000, 0.356825, -0.934171>, 1.868342 }
  232.   plane {  -<0.000000, -0.356825, 0.934171>, 1.868342 }
  233.   plane {  <-0.000000, -0.356825, -0.934171>, 1.868342 }
  234.   plane {  <0.577350, 0.577350, 0.577350>, 1.868342 }
  235.   plane {  -<-0.577350, -0.577350, 0.577350>, 1.868342 }
  236.   plane {  -<-0.577350, 0.577350, -0.577350>, 1.868342 }
  237.   plane {  <0.577350, -0.577350, -0.577350>, 1.868342 }
  238.   plane {  -<0.577350, -0.577350, -0.577350>, 1.868342 }
  239.   plane {  <-0.577350, 0.577350, -0.577350>, 1.868342 }
  240.   plane {  <-0.577350, -0.577350, 0.577350>, 1.868342 }
  241.   plane {  -<0.577350, 0.577350, 0.577350>, 1.868342 }
  242.   plane {  -<-0.850651, -0.525731, -0.000003>, 1.701302 }
  243.   plane {  <0.850651, -0.525731, 0.000003>, 1.701302 }
  244.   plane {  <-0.850651, 0.525731, 0.000003>, 1.701302 }
  245.   plane {  -<0.850651, 0.525731, -0.000003>, 1.701302 }
  246.   plane {  -<-0.000003, -0.850651, -0.525731>, 1.701302 }
  247.   plane {  <0.000003, 0.850651, -0.525731>, 1.701302 }
  248.   plane {  <0.000003, -0.850651, 0.525731>, 1.701302 }
  249.   plane {  -<-0.000003, 0.850651, 0.525731>, 1.701302 }
  250.   plane {  -<-0.525731, -0.000003, -0.850651>, 1.701302 }
  251.   plane {  <-0.525731, 0.000003, 0.850651>, 1.701302 }
  252.   plane {  <0.525731, 0.000003, -0.850651>, 1.701302 }
  253.   plane {  -<0.525731, -0.000003, 0.850651>, 1.701302 }
  254. }
  255.  
  256.  
  257. #declare CIcosidodecahedron = composite {
  258.     polygon { < 2,  0,  0>, < 1.61803,  0.618034,  1>, < 1.61803, -0.618034,  1> }
  259.     polygon { < 2,  0,  0>, < 1.61803,  0.618034, -1>, < 1.61803, -0.618034, -1> }
  260.     polygon { <-2,  0,  0>, <-1.61803,  0.618034,  1>, <-1.61803, -0.618034,  1> }
  261.     polygon { <-2,  0,  0>, <-1.61803,  0.618034, -1>, <-1.61803, -0.618034, -1> }
  262.     polygon { < 0,  2,  0>, < 1,  1.61803,  0.618034>, < 1,  1.61803, -0.618034> }
  263.     polygon { < 0,  2,  0>, <-1,  1.61803,  0.618034>, <-1,  1.61803, -0.618034> }
  264.     polygon { < 0, -2,  0>, < 1, -1.61803,  0.618034>, < 1, -1.61803, -0.618034> }
  265.     polygon { < 0, -2,  0>, <-1, -1.61803,  0.618034>, <-1, -1.61803, -0.618034> }
  266.     polygon { < 0,  0,  2>, < 0.618034,  1,  1.61803>, <-0.618034,  1,  1.61803> }
  267.     polygon { < 0,  0,  2>, < 0.618034, -1,  1.61803>, <-0.618034, -1,  1.61803> }
  268.     polygon { < 0,  0, -2>, < 0.618034,  1, -1.61803>, <-0.618034,  1, -1.61803> }
  269.     polygon { < 0,  0, -2>, < 0.618034, -1, -1.61803>, <-0.618034, -1, -1.61803> }
  270.     polygon { < 1.61803,  0.618034,  1>, < 1,  1.61803,  0.618034>, < 0.618034,  1,  1.61803> }
  271.     polygon { < 1.61803,  0.618034, -1>, < 1,  1.61803, -0.618034>, < 0.618034,  1, -1.61803> }
  272.     polygon { < 1.61803, -0.618034,  1>, < 1, -1.61803,  0.618034>, < 0.618034, -1,  1.61803> }
  273.     polygon { < 1.61803, -0.618034, -1>, < 1, -1.61803, -0.618034>, < 0.618034, -1, -1.61803> }
  274.     polygon { <-1.61803,  0.618034,  1>, <-1,  1.61803,  0.618034>, <-0.618034,  1,  1.61803> }
  275.     polygon { <-1.61803,  0.618034, -1>, <-1,  1.61803, -0.618034>, <-0.618034,  1, -1.61803> }
  276.     polygon { <-1.61803, -0.618034,  1>, <-1, -1.61803,  0.618034>, <-0.618034, -1,  1.61803> }
  277.     polygon { <-1.61803, -0.618034, -1>, <-1, -1.61803, -0.618034>, <-0.618034, -1, -1.61803> }
  278.     polygon { < 2,  0,  0>, < 1.61803,  0.618034,  1>, < 1,  1.61803,  0.618034>, < 1,  1.61803, -0.618034>, < 1.61803,  0.618034, -1> }
  279.     polygon { < 2,  0,  0>, < 1.61803, -0.618034,  1>, < 1, -1.61803,  0.618034>, < 1, -1.61803, -0.618034>, < 1.61803, -0.618034, -1> }
  280.     polygon { <-2,  0,  0>, <-1.61803,  0.618034,  1>, <-1,  1.61803,  0.618034>, <-1,  1.61803, -0.618034>, <-1.61803,  0.618034, -1> }
  281.     polygon { <-2,  0,  0>, <-1.61803, -0.618034,  1>, <-1, -1.61803,  0.618034>, <-1, -1.61803, -0.618034>, <-1.61803, -0.618034, -1> }
  282.     polygon { < 0,  2,  0>, < 1,  1.61803,  0.618034>, < 0.618034,  1,  1.61803>, <-0.618034,  1,  1.61803>, <-1,  1.61803,  0.618034> }
  283.     polygon { < 0,  2,  0>, < 1,  1.61803, -0.618034>, < 0.618034,  1, -1.61803>, <-0.618034,  1, -1.61803>, <-1,  1.61803, -0.618034> }
  284.     polygon { < 0, -2,  0>, < 1, -1.61803,  0.618034>, < 0.618034, -1,  1.61803>, <-0.618034, -1,  1.61803>, <-1, -1.61803,  0.618034> }
  285.     polygon { < 0, -2,  0>, < 1, -1.61803, -0.618034>, < 0.618034, -1, -1.61803>, <-0.618034, -1, -1.61803>, <-1, -1.61803, -0.618034> }
  286.     polygon { < 0,  0,  2>, < 0.618034,  1,  1.61803>, < 1.61803,  0.618034,  1>, < 1.61803, -0.618034,  1>, < 0.618034, -1,  1.61803> }
  287.     polygon { < 0,  0,  2>, <-0.618034,  1,  1.61803>, <-1.61803,  0.618034,  1>, <-1.61803, -0.618034,  1>, <-0.618034, -1,  1.61803> }
  288.     polygon { < 0,  0, -2>, < 0.618034,  1, -1.61803>, < 1.61803,  0.618034, -1>, < 1.61803, -0.618034, -1>, < 0.618034, -1, -1.61803> }
  289.     polygon { < 0,  0, -2>, <-0.618034,  1, -1.61803>, <-1.61803,  0.618034, -1>, <-1.61803, -0.618034, -1>, <-0.618034, -1, -1.61803> }
  290. }
  291.  
  292.  
  293.