1 #ifndef __FASTJET__VORONOI_H__     2 #define __FASTJET__VORONOI_H__   107 #include "fastjet/LimitedWarning.hh"   117 FASTJET_BEGIN_NAMESPACE      
   129   VPoint() : x(0.0), y(0.0) {}
   132   VPoint(
double _x, 
double _y) : x(_x), y(_y) {}
   135   inline VPoint operator + (
const VPoint &p)
 const{
   136     return VPoint(x+p.x, y+p.y);
   140   inline VPoint operator - (
const VPoint &p)
 const{
   141     return VPoint(x-p.x, y-p.y);
   145   inline VPoint 
operator * (
const double t)
 const{
   146     return VPoint(x*t, y*t);
   155 inline double norm(
const VPoint p){
   156   return p.x*p.x+p.y*p.y;
   162   return p1.x*p2.y-p1.y*p2.x;
   168   return p1.x*p2.x+p1.y*p2.y;
   214 class FreeNodeArrayList{
   217   FreeNodeArrayList* next;
   238   Halfedge *ELleft, *ELright;
   243   volatile double ystar;
   255 class VoronoiDiagramGenerator{
   257   VoronoiDiagramGenerator();
   258   ~VoronoiDiagramGenerator();
   260   bool generateVoronoi(std::vector<VPoint> *_parent_sites,
   261                        double minX, 
double maxX, 
double minY, 
double maxY, 
   264   inline void resetIterator(){
   265     iteratorEdges = allEdges;
   268   bool getNext(GraphEdge **e){
   269     if(iteratorEdges == 0)
   273     iteratorEdges = iteratorEdges->next;
   277   std::vector<VPoint> *parent_sites;
   283   char *getfree(Freelist *fl);  
   288   Halfedge *HEcreate(), *ELleft(), *ELright(), *ELleftbnd();
   289   Halfedge *HEcreate(Edge *e,
int pm);
   292   Halfedge *PQextractmin();     
   293   void freeinit(Freelist *fl,
int size);
   294   void makefree(Freenode *curr,Freelist *fl);
   302   void endpoint(Edge *e,
int lr,Site * s);
   304   void ELdelete(Halfedge *he);
   305   Halfedge *ELleftbnd(VPoint *p);
   306   Halfedge *ELright(Halfedge *he);
   307   void makevertex(Site *v);
   309   void PQinsert(Halfedge *he,Site * v, 
double offset);
   310   void PQdelete(Halfedge *he);
   312   void ELinsert(Halfedge *lb, Halfedge *newHe);
   313   Halfedge * ELgethash(
int b);
   314   Halfedge *ELleft(Halfedge *he);
   315   Site *leftreg(Halfedge *he);
   317   int PQbucket(Halfedge *he);
   318   void clip_line(Edge *e);
   319   char *myalloc(
unsigned n);
   320   int right_of(Halfedge *el,VPoint *p);
   322   Site *rightreg(Halfedge *he);
   323   Edge *bisect(Site *s1, Site *s2);
   324   double dist(Site *s,Site *t);
   328   Site *intersect(Halfedge *el1, Halfedge *el2 );
   332   void pushGraphEdge(
double x1, 
double y1, 
double x2, 
double y2, 
   348   Halfedge *ELleftend, *ELrightend;
   352   double xmin, xmax, ymin, ymax, deltax, deltay;
   369   int ntry, totalsearch;
   370   double pxmin, pxmax, pymin, pymax, cradius;
   373   double borderMinX, borderMaxX, borderMinY, borderMaxY;
   375   FreeNodeArrayList* allMemoryList;
   376   FreeNodeArrayList* currentMemoryBlock;
   379   GraphEdge* iteratorEdges;
   381   double minDistanceBetweenSites;
   386 int scomp(
const void *p1,
const void *p2);
   389 FASTJET_END_NAMESPACE
 double norm(const VPoint p)
norm of a vector 
 
Selector operator*(const Selector &s1, const Selector &s2)
successive application of 2 selectors 
 
double scalar_product(const VPoint &p1, const VPoint &p2)
scalar product 
 
class to provide facilities for giving warnings up to some maximum number of times and to provide glo...
 
double vector_product(const VPoint &p1, const VPoint &p2)
2D vector product