#ifndef CCS_EDGEUSE_GUARD #define CCS_EDGEUSE_GUARD #include "Edge.h" namespace CCS { enum edgeUseDir_e {EUD_CCW, EUD_CW}; class EdgeUse { public: Edge *edge; edgeUseDir_e dir; EdgeUse(Edge *edge, Vertex *useStartVert) : edge(edge) { if(edge->start == useStartVert) { this->dir = EUD_CCW; } else { this->dir = EUD_CW; } } EdgeUse(Edge *edge, edgeUseDir_e dir) : edge(edge), dir(dir) { } Vertex *getUseStart() { if(this->dir == EUD_CCW) return edge->start; else return edge->end; } Vertex *getUseEnd() { if(this->dir == EUD_CCW) return edge->end; else return edge->start; } /* * Returns the OTHER face, as derived by THIS edge use's direction. * So, the other face's corresponding edge use must have opposite direction. */ Face *getSharingFace() { if(this->dir == EUD_CCW) return edge->rightFace; else return edge->leftFace; } }; } #endif /* CCS_EDGEUSE_GUARD */