19 #ifndef GEOS_TRIANGULATE_QUADEDGE_QUADEDGE_H
20 #define GEOS_TRIANGULATE_QUADEDGE_QUADEDGE_H
24 #include <geos/triangulate/quadedge/Vertex.h>
25 #include <geos/geom/LineSegment.h>
28 namespace triangulate {
51 class GEOS_DLL QuadEdge {
63 static std::auto_ptr<QuadEdge> makeEdge(
const Vertex &o,
const Vertex &d);
74 static std::auto_ptr<QuadEdge> connect(QuadEdge &a, QuadEdge &b);
89 static void splice(QuadEdge &a, QuadEdge &b);
96 static void swap(QuadEdge &e);
131 const QuadEdge& getPrimary()
const;
138 virtual void setData(
void* data);
145 virtual void* getData();
164 inline bool isLive() {
174 inline void setNext(QuadEdge *next) {
188 inline QuadEdge& rot()
const {
197 inline QuadEdge& invRot()
const {
206 inline QuadEdge& sym()
const {
215 inline QuadEdge& oNext()
const {
224 inline QuadEdge& oPrev()
const {
225 return rot().oNext().rot();
233 inline QuadEdge& dNext()
const {
234 return sym().oNext().sym();
242 inline QuadEdge& dPrev()
const {
243 return invRot().oNext().invRot();
251 inline QuadEdge& lNext()
const {
252 return invRot().oNext().rot();
290 inline void setOrig(
const Vertex &o) {
299 inline void setDest(
const Vertex &d) {
308 const Vertex& orig()
const {
317 const Vertex& dest()
const {
326 inline double getLength()
const {
327 return orig().getCoordinate().
distance(dest().getCoordinate());
337 bool equalsNonOriented(
const QuadEdge &qe)
const;
346 bool equalsOriented(
const QuadEdge &qe)
const;
354 std::auto_ptr<geom::LineSegment> toLineSegment()
const;
361 #endif //GEOS_TRIANGULATE_QUADEDGE_QUADEDGE_H