Edge.h

Go to the documentation of this file.
00001 
00010 #ifndef _MESHLIB_EDGE_H_
00011 #define _MESHLIB_EDGE_H_
00012 
00013 #include <assert.h>
00014 #include <stdlib.h>
00015 #include <math.h>
00016 #include <string>
00017 
00018 namespace MeshLib{
00019 
00020 class CHalfEdge;
00021 class CVertex;
00022 
00026 class CEdge
00027 {
00028 public:
00032         CEdge(){ m_halfedge[0] = NULL; m_halfedge[1] = NULL; };
00036         ~CEdge(){};
00037         
00043         CHalfEdge * & halfedge( int id ) { assert( 0<=id && id < 2 ); return m_halfedge[id];};
00047         bool              boundary() { return (m_halfedge[0] == NULL && m_halfedge[1] != NULL ) || (m_halfedge[0] != NULL && m_halfedge[1] == NULL ); };
00053         CHalfEdge * & other( CHalfEdge * he ) { return (he != m_halfedge[0] )?m_halfedge[0]:m_halfedge[1]; };
00057         std::string & string() { return m_string; };
00061         void _from_string() {};
00065         void _to_string() {};
00066 protected:
00070         CHalfEdge      * m_halfedge[2];
00074     std::string      m_string;
00075 };
00076 
00077 
00082 class CEdgeKey
00083 {
00084 public:
00090         CEdgeKey( int id1, int id2 )
00091         {
00092                 assert( id1 != id2 );
00093                 m_id[0] = (id1 < id2)?id1:id2;
00094                 m_id[1] = (id1 < id2)?id2:id1;
00095         };
00100         bool operator<( const CEdgeKey & key ) const
00101         {       
00102                 if( m_id[0] < key.m_id[0] ) return true;
00103                 if( m_id[0] > key.m_id[0] ) return false;
00104                 if( m_id[1] < key.m_id[1] ) return true;
00105                 if( m_id[1] > key.m_id[1] ) return false;
00106                 return false;
00107         };
00113         bool operator==( const CEdgeKey & key ) const
00114         {
00115                 if( m_id[0] != key.m_id[0] ) return false;
00116                 if( m_id[1] != key.m_id[1] ) return false;
00117                 return true;
00118         }
00123         ~CEdgeKey(){};
00124 
00125 protected:
00129         int  m_id[2];
00130 };
00131 
00132 }//name space MeshLib
00133 
00134 #endif //_MESHLIB_EDGE_H_ defined
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Defines