Files Classes Functions Hierarchy
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
1.5.8