#ifndef EDGES_H
#define EDGES_H
#include "voronoi/site.h"
#include "voronoi/info.h"
namespace Voronoi {
struct Edge {
double a,b,c;
Site *ep[2];
Site *reg[2];
int edgenbr;
};
typedef enum _EdgeEnds {le = 0, re = 1} EdgeEnd;
inline EdgeEnd opp(EdgeEnd e) {
if(e==le)
return re;
else
return le;
}
struct Edges {
Freelist<Edge> fedges;
int nedges;
Sites &sites;
Infos &infos;
Bounds &bounds;
Edges(Sites &sites,Infos &infos,Bounds &bounds,int N) :
fedges(ROUND(sqrt((double)N))),
nedges(0),
sites(sites),
infos(infos),
bounds(bounds) {}
void endpoint(Edge*, EdgeEnd, Site*);
void clip_line(Edge *e);
Edge *bisect(Site*, Site*);
private:
void doSeg (Edge *e, double x1, double y1, double x2, double y2);
};
struct Whattux {};
} #endif