Computational Geometry Algorithms Library  1.0
Computational Geometry Algorithms Library Documentation
DCELFace.h
Go to the documentation of this file.
1 class DCELFace
2 {
3 public:
4  DCELFace();
5  ~DCELFace();
6 
8  bool bordered;
10  int boundaryLength();
11  vector<pair<DCELVertex *, int> > sortedVertices();
12 };
13 
14 DCELFace::DCELFace() : edge(NULL), next(NULL), bordered(true)
15 {
16 }
17 
19 
20 }
21 
23  int length = 0;
24  DCELHalfEdge* walker = edge;
25  do {
26  walker = walker->next;
27  length++;
28  } while (walker != edge);
29  return length;
30 }
31 
32 vector<pair<DCELVertex *, int> > DCELFace::sortedVertices() {
33  vector<pair<DCELVertex*, int> > list;
34  DCELVertex* highest = edge->origin;
35  DCELHalfEdge* walker = edge;
36  DCELHalfEdge *left, *right;
37  do {
38  if (walker->origin->y > highest->y || (walker->origin->y == highest->y && walker->origin->x < highest->x)) {
39  highest = walker->origin;
40  }
41  walker = walker->next;
42  } while (walker != edge);
43 
44  list.push_back(make_pair(highest,0));
45  left = highest->getEdgeOnFace(this)->next;
46  right = highest->getEdgeOnFace(this)->getPrev();
47  do {
48  if(left->origin->y > right->origin->y || (left->origin->y == right->origin->y && left->origin->x < right->origin->x)) {
49  list.push_back(make_pair(left->origin, -1));
50  left = left->next;
51  }
52  else {
53  list.push_back(make_pair(right->origin, 1));
54  right = right->getPrev();
55  }
56  }
57  while(left != right->next );
58  return list;
59 }
DCELHalfEdge * next
Definition: DCELHalfEdge.h:15
Definition: DCELFace.h:1
DCELVertex * origin
Definition: DCELHalfEdge.h:17
DCELHalfEdge * getEdgeOnFace(DCELFace *face)
Definition: DCELVertex.h:60
int boundaryLength()
Definition: DCELFace.h:22
DCELFace * next
Definition: DCELFace.h:9
Definition: DCELVertex.h:2
DCELHalfEdge * getPrev()
Half Edges.
Definition: DCELHalfEdge.h:36
double x
Definition: DCELVertex.h:8
DCELFace()
Definition: DCELFace.h:14
double y
Definition: DCELVertex.h:9
Definition: DCELHalfEdge.h:8
vector< pair< DCELVertex *, int > > sortedVertices()
Definition: DCELFace.h:32
~DCELFace()
Definition: DCELFace.h:18
bool bordered
Definition: DCELFace.h:8
DCELHalfEdge * edge
Definition: DCELFace.h:7