00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_STRUCTURE_TRIANGLEEDGE_H 00006 #define BALL_STRUCTURE_TRIANGLEEDGE_H 00007 00008 #ifndef BALL_STRUCTURE_GRAPHEDGE_H 00009 # include <BALL/STRUCTURE/graphEdge.h> 00010 #endif 00011 00012 #ifndef BALL_STRUCTURE_GRAPHFACE_H 00013 # include <BALL/STRUCTURE/graphFace.h> 00014 #endif 00015 00016 #ifndef BALL_STRUCTURE_GRAPHVERTEX_H 00017 # include <BALL/STRUCTURE/graphVertex.h> 00018 #endif 00019 00020 00021 namespace BALL 00022 { 00023 00024 class Triangle; 00025 class TrianglePoint; 00026 class TriangulatedSurface; 00027 class TriangulatedSphere; 00028 class TriangulatedSES; 00029 class TriangulatedSAS; 00030 class SESTriangulator; 00031 class SASTriangulator; 00032 00033 00037 class BALL_EXPORT TriangleEdge 00038 : public GraphEdge< TrianglePoint,TriangleEdge,Triangle > 00039 { 00040 00041 public: 00042 00055 friend class Triangle; 00056 friend class TrianglePoint; 00057 friend class TriangulatedSurface; 00058 friend class TriangulatedSphere; 00059 friend class TriangulatedSES; 00060 friend class TriangulatedSAS; 00061 friend class SESTriangulator; 00062 friend class SASTriangulator; 00063 00064 BALL_CREATE(TriangleEdge) 00065 00066 00069 00073 TriangleEdge(); 00074 00080 TriangleEdge(TrianglePoint* v1, TrianglePoint* v2); 00081 00089 TriangleEdge(const TriangleEdge& edge, bool deep = false); 00090 00094 virtual ~TriangleEdge(); 00096 00100 00105 void setPoint(Position i, TrianglePoint* point); 00106 00112 TrianglePoint* getPoint(Position i) const; 00113 00119 void setTriangle(Position i, Triangle* triangle); 00120 00126 Triangle* getTriangle(Position i) const; 00127 00129 00133 00138 virtual bool operator == (const TriangleEdge&) const; 00139 00144 virtual bool operator != (const TriangleEdge&) const; 00145 00149 virtual bool operator *= (const TriangleEdge&) const; 00150 00152 00153 }; 00154 00155 00159 00162 BALL_EXPORT std::ostream& operator << (std::ostream& s, const TriangleEdge& edge); 00163 00165 00166 00167 } // namespace BALL 00168 00169 00170 #endif // BALL_STRUCTURE_TRIANGLEEDGE_H