Computational Geometry Algorithms Library  1.0
Computational Geometry Algorithms Library Documentation
Public Member Functions | Public Attributes | List of all members
DCELFace Class Reference

#include <DCELFace.h>

Collaboration diagram for DCELFace:
Collaboration graph
[legend]

Public Member Functions

 DCELFace ()
 
 ~DCELFace ()
 
int boundaryLength ()
 
vector< pair< DCELVertex *, int > > sortedVertices ()
 

Public Attributes

DCELHalfEdgeedge
 
bool bordered
 
DCELFacenext
 

Constructor & Destructor Documentation

DCELFace::DCELFace ( )
14  : edge(NULL), next(NULL), bordered(true)
15 {
16 }
DCELFace * next
Definition: DCELFace.h:9
bool bordered
Definition: DCELFace.h:8
DCELHalfEdge * edge
Definition: DCELFace.h:7
DCELFace::~DCELFace ( )
18  {
19 
20 }

Member Function Documentation

int DCELFace::boundaryLength ( )
22  {
23  int length = 0;
24  DCELHalfEdge* walker = edge;
25  do {
26  walker = walker->next;
27  length++;
28  } while (walker != edge);
29  return length;
30 }
DCELHalfEdge * next
Definition: DCELHalfEdge.h:15
Definition: DCELHalfEdge.h:8
DCELHalfEdge * edge
Definition: DCELFace.h:7
vector< pair< DCELVertex *, int > > DCELFace::sortedVertices ( )
32  {
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
DCELVertex * origin
Definition: DCELHalfEdge.h:17
DCELHalfEdge * getEdgeOnFace(DCELFace *face)
Definition: DCELVertex.h:60
Definition: DCELVertex.h:2
DCELHalfEdge * getPrev()
Half Edges.
Definition: DCELHalfEdge.h:36
double x
Definition: DCELVertex.h:8
double y
Definition: DCELVertex.h:9
Definition: DCELHalfEdge.h:8
DCELHalfEdge * edge
Definition: DCELFace.h:7

Member Data Documentation

bool DCELFace::bordered
DCELHalfEdge* DCELFace::edge
DCELFace* DCELFace::next

The documentation for this class was generated from the following file: