proj home

Files   Classes   Functions   Hierarchy  

tetrahedronpartition.h

Go to the documentation of this file.
00001 #ifndef TETRAHEDRONPARTITION_H
00002 #define TETRAHEDRONPARTITION_H
00003 
00004 #include <halfspaceD3.h>
00005 #include <partitionspace.h>
00006 #include <typedefs.h>
00007 
00011 template< typename T, typename D >
00012 class tetrahedronpartition : public partitionspace<T>
00013 {
00014 public:
00015 
00017   T pi[4];
00018 
00021   halfspaceD3<T,D> hi[4];
00022 
00025   tetrahedronpartition
00026   (
00027     T const & p0_,
00028     T const & p1_,
00029     T const & p2_,
00030     T const & p3_
00031   );
00033   tetrahedronpartition() {}
00036   void construct
00037   (
00038     T const & p0_,
00039     T const & p1_,
00040     T const & p2_,
00041     T const & p3_
00042   );
00043 
00045   boolc isInside( T const & x ) const; 
00046 
00047 };
00048 
00049 
00050 // --------------------------------------------------------- 
00051 // Implementation
00052 
00053 
00054 template< typename T, typename D >
00055 tetrahedronpartition<T,D>::tetrahedronpartition
00056 (
00057   T const & p0_,
00058   T const & p1_,
00059   T const & p2_,
00060   T const & p3_
00061 )
00062 {
00063   construct(p0_,p1_,p2_,p3_);
00064 }
00065 
00066 
00067 template< typename T, typename D >
00068 void tetrahedronpartition<T,D>::construct
00069 (
00070   T const & p0_,
00071   T const & p1_,
00072   T const & p2_,
00073   T const & p3_
00074 )
00075 {
00076   pi[0] = p0_;
00077   pi[1] = p1_;
00078   pi[2] = p2_;
00079   pi[3] = p3_;
00080 
00081   hi[3] = halfspaceD3<T,D>(p0_,p1_,p2_);
00082   assert( hi[3].isInside(pi[3])==true );
00083   hi[1] = halfspaceD3<T,D>(p0_,p2_,p3_);
00084   assert( hi[1].isInside(pi[1])==true );
00085   hi[2] = halfspaceD3<T,D>(p3_,p1_,p0_);
00086   assert( hi[2].isInside(pi[2])==true );
00087   hi[0] = halfspaceD3<T,D>(p2_,p1_,p3_);
00088   assert( hi[0].isInside(pi[0])==true );
00089 }
00090 
00091 template< typename T, typename D >
00092 boolc tetrahedronpartition<T,D>::isInside( T const & x ) const
00093 {
00094   for (uint i=0; i<4; ++i)
00095     if (!hi[i].isInside(x))
00096       return false;
00097 
00098   return true;
00099 }
00100 
00101 #endif
00102 
00103 

Generated on Fri Mar 4 00:49:31 2011 for Chelton Evans Source by  doxygen 1.5.8