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

分形几何

开发平台:

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 "point2d.h"
  9. /**
  10.  * The class for Edge.
  11.  */
  12. class Edge
  13. {
  14. // public constructors & destructor
  15. public:
  16.     /**
  17.      * Default constructor without data.
  18.      */
  19.     Edge(void);
  20. // public member functions
  21. public:
  22.     /**
  23.      * Returns the twin edge.
  24.      */
  25.     Edge* twin(void);
  26.     /**
  27.      * Returns the next edge(CCW).
  28.      */
  29.     Edge* next(void);
  30.     /**
  31.      * Returns the previous edge(CCW).
  32.      */
  33.     Edge* prev(void);
  34. // public member functions
  35. public:
  36.     /**
  37.      * Returns the edge from the destination to the origin of the current edge.
  38.      */
  39.     Edge* sym(void);
  40.     /**
  41.      * Returns the next ccw edge around (from) the origin of the current edge.
  42.      */
  43.     Edge* oNext(void);
  44.     /**
  45.      * Returns the next cw edge around (from) the origin of the current edge.
  46.      */
  47.     Edge* oPrev(void);
  48.     /**
  49.      * Returns the next ccw edge around (into) the destination of
  50.      * the current edge.
  51.      */
  52.     Edge* dNext(void);
  53.     /**
  54.      * Returns the next cw edge around (into) the destination of
  55.      * the current edge.
  56.      */
  57.     Edge* dPrev(void);
  58.     /**
  59.      * Returns the ccw edge around the left face following the current edge.
  60.      */
  61.     Edge* lNext(void);
  62.     /**
  63.      * Returns the ccw edge around the left face before the current edge.
  64.      */
  65.     Edge* lPrev(void);
  66.     /**
  67.      * Returns the edge around the right face ccw following the current edge.
  68.      */
  69.     Edge* rNext(void);
  70.     /**
  71.      * Returns the edge around the right face ccw before the current edge.
  72.      */
  73.     Edge* rPrev(void);
  74.     /**
  75.      * Returns the origin of the current edge.
  76.      */
  77.     Point2d* org(void);
  78.     /**
  79.      * Returns the destination of the current edge.
  80.      */
  81.     Point2d* dest(void);
  82.     /**
  83.      * Gets the pointer to the origin.
  84.      */
  85.     const Point2d& org2d(void) const;
  86.     /**
  87.      * Gets the pointer to the destination.
  88.      */
  89.     const Point2d& dest2d(void) const;
  90.     /**
  91.      * Sets the origin with @c org, and the destination with @c des.
  92.      */
  93.     void endPoints(Point2d* org, Point2d* des);
  94.     /**
  95.      * Returns the address of the starting edge.
  96.      */
  97.     void* qEdge(void);
  98. // public data members
  99. public:
  100.     int num;
  101.     Edge* eNext;
  102.     Edge* ePrev;
  103.     Point2d* oData;
  104. };