delaunaytriangulation.h
上传用户:chinasdcnc
上传日期:2022-07-02
资源大小:2702k
文件大小:1k
源码类别:

分形几何

开发平台:

Visual C++

  1. //
  2. // Delaunay Triangulation
  3. //
  4. // Homework of CG lesson (Fall 2009) in Tsinghua University.
  5. // All rights reserved.
  6. //
  7. #pragma once
  8. #include "edge.h"
  9. #include "point2d.h"
  10. #include "dcel.h"
  11. #include <vector>
  12. using namespace std;
  13. /**
  14.  * Stores le and re which are the ccw CH edge out of the leftmost vertex
  15.  * and the cw CH edge out of the rightmost vertex, respectively.
  16.  */
  17.  struct MaxEdge
  18.  {
  19.      MaxEdge(void)
  20.      {
  21.          le = NULL;
  22.          re = NULL;
  23.      }
  24.      Edge* le;
  25.  Edge* re;
  26.  };
  27.  /**
  28.   * Class for delaunay triangulation.
  29.   */
  30. class DelaunayTriangulation
  31. {
  32. // public constructors & destructor
  33. public:
  34.     DelaunayTriangulation(void);
  35. // public member functions
  36. public:
  37.     /**
  38.      * Initials the point data.
  39.      */
  40.     void initial(int* count, Point2d* ps);
  41.     /**
  42.      * Destroys and resets the edge data.
  43.      */
  44.     void destroy(void);
  45.     /**
  46.      * Does delaunay triangulation operation.
  47.      */
  48.     void doDelaunayTriangulation(void);
  49. /**
  50.  * Gets the @c pos point.
  51.  */
  52. Point2d* point(int pos) const;
  53. // private member functions
  54. private:
  55.     /**
  56.      * Collects dcel for deleting.
  57.      */
  58.     void collectDcel(Edge* e, vector<DCEL*> &dcels);
  59. /**
  60.  * DAC algorithm for delaunay triangulation.
  61.  */
  62. MaxEdge delaunay(int begin, int end);
  63. // public data members
  64. public:
  65.     int nPoints;
  66.     Point2d *points;
  67.     MaxEdge maxEdge;
  68.     bool isFinished;
  69. };