00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00025 #ifndef _DELAUNAY_TRIANGULATION_H_ 00026 #define _DELAUNAY_TRIANGULATION_H_ 00027 00028 #include <vector> 00029 00030 namespace EdgeAlgebra 00031 { 00032 00033 class Site; 00034 class QuadEdge; 00035 00041 class DelaunayTriangulation 00042 { 00043 public: 00046 DelaunayTriangulation(const std::vector<Site*>& sites); 00047 00049 ~DelaunayTriangulation(void); 00050 00053 QuadEdge* GetLeftHalve(void) const; 00054 00057 QuadEdge* GetRightHalve(void) const; 00058 00059 private: 00061 QuadEdge* m_left; 00062 00064 QuadEdge* m_right; 00065 00067 DelaunayTriangulation(const DelaunayTriangulation&); 00068 00070 DelaunayTriangulation& operator=(const DelaunayTriangulation&); 00071 00079 void RunRecursive(const std::vector<Site*>& S, int sitesLeftIndex, 00080 int halveSitesCount, QuadEdge* &le, QuadEdge* &re); 00081 00087 bool Valid(QuadEdge* edge, QuadEdge* base1); 00088 }; 00089 00090 } 00091 00092 #endif