00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: triangleEdge.h,v 1.11.18.1 2007/03/25 21:25:33 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_STRUCTURE_TRIANGLEEDGE_H 00008 #define BALL_STRUCTURE_TRIANGLEEDGE_H 00009 00010 #ifndef BALL_STRUCTURE_GRAPHEDGE_H 00011 # include <BALL/STRUCTURE/graphEdge.h> 00012 #endif 00013 00014 #ifndef BALL_STRUCTURE_GRAPHFACE_H 00015 # include <BALL/STRUCTURE/graphFace.h> 00016 #endif 00017 00018 #ifndef BALL_STRUCTURE_GRAPHVERTEX_H 00019 # include <BALL/STRUCTURE/graphVertex.h> 00020 #endif 00021 00022 00023 namespace BALL 00024 { 00025 00026 class Triangle; 00027 class TrianglePoint; 00028 class TriangulatedSurface; 00029 class TriangulatedSphere; 00030 class TriangulatedSES; 00031 class TriangulatedSAS; 00032 class SESTriangulator; 00033 class SASTriangulator; 00034 00035 00039 class BALL_EXPORT TriangleEdge 00040 : public GraphEdge< TrianglePoint,TriangleEdge,Triangle > 00041 { 00042 00043 public: 00044 00057 friend class Triangle; 00058 friend class TrianglePoint; 00059 friend class TriangulatedSurface; 00060 friend class TriangulatedSphere; 00061 friend class TriangulatedSES; 00062 friend class TriangulatedSAS; 00063 friend class SESTriangulator; 00064 friend class SASTriangulator; 00065 00066 BALL_CREATE(TriangleEdge) 00067 00068 00071 00075 TriangleEdge(); 00076 00082 TriangleEdge(TrianglePoint* v1, TrianglePoint* v2); 00083 00091 TriangleEdge(const TriangleEdge& edge, bool deep = false); 00092 00096 virtual ~TriangleEdge(); 00098 00102 00107 void setPoint(Position i, TrianglePoint* point); 00108 00114 TrianglePoint* getPoint(Position i) const; 00115 00121 void setTriangle(Position i, Triangle* triangle); 00122 00128 Triangle* getTriangle(Position i) const; 00129 00131 00135 00140 virtual bool operator == (const TriangleEdge&) const; 00141 00146 virtual bool operator != (const TriangleEdge&) const; 00147 00151 virtual bool operator *= (const TriangleEdge&) const; 00152 00154 00155 }; 00156 00157 00161 00164 BALL_EXPORT std::ostream& operator << (std::ostream& s, const TriangleEdge& edge); 00165 00167 00168 00169 } // namespace BALL 00170 00171 00172 #endif // BALL_STRUCTURE_TRIANGLEEDGE_H