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