00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __Triangle_h__
00014 #define __Triangle_h__
00015
00016
00017
00018 namespace subdiv {
00019
00020 template <typename V>
00021 class Triangle {
00022 public:
00023 Triangle(){}
00024 Triangle(V* a, V* b, V* c) {
00025 _m_v[0]=a;
00026 _m_v[1]=b;
00027 _m_v[2]=c;
00028 _m_t[0]=NULL;
00029 _m_t[1]=NULL;
00030 _m_t[2]=NULL;
00031 }
00032 ~Triangle(){}
00033
00034
00035 V* a(){return _m_v[0];}
00036 V* b(){return _m_v[1];}
00037 V* c(){return _m_v[2];}
00038
00039 std::pair<V*, V*> vertexPairOnEdge(int i) {
00040 return std::make_pair(_m_v[i], _m_v[Next[i]]);
00041 }
00042
00043
00044 void printConnectivityData(std::ostream& os) {
00045 os << _m_v[0]->number() << " "<< _m_v[1]->number() << " "<< _m_v[2]->number();
00046 }
00047
00048 inline Triangle*& across( const V*, const V* );
00049 inline Triangle*& neighbor(int i){return _m_t[i];}
00050
00051 private:
00052 V* _m_v[3];
00053 Triangle* _m_t[3];
00054 };
00055
00056 #include "Triangle.cc"
00057
00058 }
00059 #endif