proj home

Files   Classes   Functions   Hierarchy  

tessD2misc.h

Go to the documentation of this file.
00001 #ifndef TESSD2MISC_H
00002 #define TESSD2MISC_H
00003 
00007 template< typename TESS, typename PT, typename INDX >
00008 class tessD2misc
00009 {
00010   TESS & tess;
00011 public:
00012 
00013   tessD2misc(TESS & tess_)
00014     : tess(tess_) {}
00015 
00017   void windinganticlockwise();
00019   void windingclockwise();
00020 
00021 private:
00022   template < typename TR >
00023   void windingclockwisetriangle(TR & t);
00024 };
00025 
00026 
00027 //---------------------------------------------------------
00028 // Implementation
00029 
00030 template< typename TESS, typename PT, typename INDX >
00031 template< typename TR >
00032 void tessD2misc<TESS,PT,INDX>::windingclockwisetriangle(TR & t)
00033 {
00034   PT const & P0(tess.pts[t.pi[0]]); 
00035   PT const & P1(tess.pts[t.pi[1]]); 
00036   PT const & P2(tess.pts[t.pi[2]]); 
00037 
00038   PT a(P0-P1);
00039   PT a2;
00040   a2.y = -a.x;
00041   a2.x = a.y;
00042 
00043   if (a2.dot(P2-P1) > 0.0)
00044   {
00045     INDX k=t.pi[1];
00046     t.pi[1] = t.pi[2];
00047     t.pi[2] = k;
00048   }
00049 }
00050 
00051 template< typename TESS, typename PT, typename INDX >
00052 void tessD2misc<TESS,PT,INDX>::windingclockwise()
00053 {
00054   INDX sz = tess.vi.size();
00055   for (INDX i=1; i<sz; ++i)
00056     windingclockwisetriangle(tess.vi[i]);
00057 }
00058     
00059 template< typename TESS, typename PT, typename INDX >
00060 void tessD2misc<TESS,PT,INDX>::windinganticlockwise()
00061 {
00062   windingclockwise();
00063 
00064   INDX sz = tess.vi.size();
00065   for (INDX i=1; i<sz; ++i)
00066   {
00067     INDX k=tess.vi[i].pi[1];
00068     tess.vi[i].pi[1] = tess.vi[i].pi[2];
00069     tess.vi[i].pi[2] = k;
00070   }
00071 }
00072     
00073 
00074 #endif
00075 

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