home *** CD-ROM | disk | FTP | other *** search
/ Freelog 38 / Freelog038.iso / Graphisme3D / Pov / Dos / povmsdos.exe / POVMSDOS.ZIP / INCLUDE / SHAPES2.INC < prev    next >
Text File  |  1998-01-21  |  5KB  |  172 lines

  1. #ifdef(Shapes2_Inc_Temp)
  2. // do nothing
  3. #else
  4. #declare Shapes2_Inc_Temp = version;
  5.  
  6. #ifdef(View_POV_Include_Stack)
  7. #   debug "including shapes2.inc\n"
  8. #end
  9.  
  10. /*
  11.               Persistence of Vision Raytracer Version 3.1
  12.          Implements additional, useful, but seldom used shapes
  13.  
  14.                     Contents:
  15.                     =========
  16.             Tetrahedron       HalfCone_Y
  17.             Octahedron        Pyramid
  18.             Dodecahedron      Pyramid2
  19.             Icosahedron       Square_X
  20.             Rhomboid          Square_Y
  21.             Hexagon           Square_Z
  22. */
  23.  
  24.  
  25. // Shapes by Tom Price [75300,620]:
  26. #declare Tetrahedron =
  27.  intersection 
  28.   {plane {-y,1}
  29.    plane {-z,1 rotate <19.47,    0, 0>}
  30.    plane {-z,1 rotate <19.47, -120, 0>}
  31.    plane {-z,1 rotate <19.47,  120, 0>}
  32.   }
  33.    
  34. #declare Octahedron = 
  35.  intersection 
  36.   {plane { z, 1 rotate < 35.26438968275, 0, 0>}
  37.    plane { z, 1 rotate <-35.26438968275, 0, 0>}
  38.    plane {-z, 1 rotate < 35.26438968275, 0, 0>}
  39.    plane {-z, 1 rotate <-35.26438968275, 0, 0>}
  40.    
  41.    plane { x, 1 rotate <0, 0, -35.26438968275>}
  42.    plane { x, 1 rotate <0, 0,  35.26438968275>}
  43.    plane {-x, 1 rotate <0, 0, -35.26438968275>}
  44.    plane {-x, 1 rotate <0, 0,  35.26438968275>}
  45.   }
  46.    
  47. #declare Dodecahedron = 
  48.  intersection 
  49.   {plane {-z, 1 rotate <-26.56505117708,    0, 0>}
  50.    plane {-z, 1 rotate <-26.56505117708,  -72, 0>}
  51.    plane {-z, 1 rotate <-26.56505117708, -144, 0>}
  52.    plane {-z, 1 rotate <-26.56505117708, -216, 0>}
  53.    plane {-z, 1 rotate <-26.56505117708, -288, 0>}
  54.    
  55.    plane {-z, 1 rotate <26.56505117708,  -36, 0>}
  56.    plane {-z, 1 rotate <26.56505117708, -108, 0>}
  57.    plane {-z, 1 rotate <26.56505117708, -180, 0>}
  58.    plane {-z, 1 rotate <26.56505117708, -252, 0>}
  59.    plane {-z, 1 rotate <26.56505117708, -324, 0>}
  60.    
  61.    plane { y, 1}
  62.    plane {-y, 1}
  63.   }
  64.    
  65. #declare Icosahedron = 
  66.  intersection 
  67.   {plane {-z, 1 rotate <52.6625,    0, 0>}
  68.    plane {-z, 1 rotate <52.6625,  -72, 0>}
  69.    plane {-z, 1 rotate <52.6625, -144, 0>}
  70.    plane {-z, 1 rotate <52.6625, -216, 0>}
  71.    plane {-z, 1 rotate <52.6625, -288, 0>}
  72.    
  73.    plane {-z, 1 rotate <10.8125,    0, 0>}
  74.    plane {-z, 1 rotate <10.8125,  -72, 0>}
  75.    plane {-z, 1 rotate <10.8125, -144, 0>}
  76.    plane {-z, 1 rotate <10.8125, -216, 0>}
  77.    plane {-z, 1 rotate <10.8125, -288, 0>}
  78.    
  79.    plane {-z, 1 rotate <-52.6625,  -36, 0>}
  80.    plane {-z, 1 rotate <-52.6625, -108, 0>}
  81.    plane {-z, 1 rotate <-52.6625, -180, 0>}
  82.    plane {-z, 1 rotate <-52.6625, -252, 0>}
  83.    plane {-z, 1 rotate <-52.6625, -324, 0>}
  84.    
  85.    plane {-z, 1 rotate <-10.8125,  -36, 0>}
  86.    plane {-z, 1 rotate <-10.8125, -108, 0>}
  87.    plane {-z, 1 rotate <-10.8125, -180, 0>}
  88.    plane {-z, 1 rotate <-10.8125, -252, 0>}
  89.    plane {-z, 1 rotate <-10.8125, -324, 0>}
  90.   }
  91.  
  92. // Shapes by others
  93. // Convenient  finite cone primitive, pointing up in the Y axis
  94. #declare HalfCone_Y = 
  95.  intersection 
  96.   {object {Cone_Y}
  97.    plane  { y, 0}
  98.    plane  {-y, 2}
  99.    translate <0, 1, 0>
  100.    scale <0.5, 1, 0.5>
  101.   }
  102.  
  103. /* Hexagonal Solid, axis along x */
  104. #declare  Hexagon = 
  105.  intersection
  106.   {plane {z, 1}  /* Rotate 90 in z axis to stand up */
  107.    plane {z, 1 rotate < 60, 0, 0>}
  108.    plane {z, 1 rotate <120, 0, 0>}
  109.    plane {z, 1 rotate <180, 0, 0>}
  110.    plane {z, 1 rotate <240, 0, 0>}
  111.    plane {z, 1 rotate <300, 0, 0>}
  112.    plane { x, 1}
  113.    plane {-x, 1}
  114.   }
  115.  
  116. /* Three Dimensional 4-Sided Diamond */
  117. #declare Rhomboid = 
  118.  intersection 
  119.   {plane {-x, 1 rotate <0, 0, -30>}
  120.    plane { x, 1 rotate <0, 0, -30>}
  121.    plane { z, 1}
  122.    plane {-z, 1}
  123.    plane { y, 1}
  124.    plane {-y, 1}
  125.   }
  126.  
  127. // Classic four-sided pyramids.
  128. // The first can't be used correctly in CSG, the second can.
  129. #declare Pyramid = 
  130.    union { // This isn't true CSG, it's just used for convenience
  131.       triangle { <-1, 0, -1>, <+1, 0, -1>, <0, 1, 0>  }
  132.       triangle { <+1, 0, -1>, <+1, 0, +1>, <0, 1, 0>  }
  133.       triangle { <-1, 0, +1>, <+1, 0, +1>, <0, 1, 0>  }
  134.       triangle { <-1, 0, +1>, <-1, 0, -1>, <0, 1, 0>  }
  135.  
  136.       triangle { <-1, 0, -1>, <-1, 0, +1>, <1, 0, +1>  }
  137.       triangle { <-1, 0, -1>, <+1, 0, -1>, <1, 0, +1>  }
  138.  
  139.    scale <1, 2, 1>
  140.    translate -y
  141. }
  142. #declare Pyramid2 = intersection {
  143.    plane { < 1, 0,  0>, 1  rotate <  0, 0,  40>}
  144.    plane { <-1, 0,  0>, 1  rotate <  0, 0, -40>}
  145.    plane { < 0, 0,  1>, 1  rotate <-40, 0,   0>}
  146.    plane { < 0, 0, -1>, 1  rotate < 40, 0,   0>}
  147.    plane { <0, -1, 0>, 0 }
  148.    translate <0 ,-1, 0>
  149. }            
  150.              
  151. // These next three are finite planes.
  152. #declare Square_X = /* Scale-able plane in x */
  153.   union 
  154.    {triangle {<0, 1, -1>, <0, -1, 1>, <0,  1,  1>}
  155.     triangle {<0, 1, -1>, <0, -1, 1>, <0, -1, -1>}
  156.    }
  157.  
  158. #declare Square_Y =  /* Scale-able plane in y */
  159.   union 
  160.    {triangle {<-1, 0, 1>, <1, 0, -1>, < 1, 0,  1>}
  161.     triangle {<-1, 0, 1>, <1, 0, -1>, <-1, 0, -1>}
  162.    }
  163.  
  164. #declare Square_Z =  /* Scale-able plane in z */
  165.   union 
  166.    {triangle {<-1, 1, 0>, <1, -1, 0>, <-1, -1, 0>}
  167.     triangle {<-1, 1, 0>, <1, -1, 0>, < 1,  1, 0>}
  168.    }
  169.  
  170. #version Shapes2_Inc_Temp;
  171. #end
  172.