1#ifndef __FASTJET__VORONOI_H__ 
    2#define __FASTJET__VORONOI_H__ 
  107#include "fastjet/LimitedWarning.hh" 
  117FASTJET_BEGIN_NAMESPACE      
 
  132  VPoint(
double _x, 
double _y) : x(_x), y(_y) {}
 
  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;
 
  214class FreeNodeArrayList{
 
  217  FreeNodeArrayList* next;
 
  238  Halfedge *ELleft, *ELright;
 
  243  volatile double ystar;
 
  260  bool generateVoronoi(std::vector<VPoint> *_parent_sites,
 
  261                       double minX, 
double maxX, 
double minY, 
double maxY, 
 
  264  inline void resetIterator(){
 
  265    iteratorEdges = allEdges;
 
  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);
 
  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;
 
  381  double minDistanceBetweenSites;
 
  386int scomp(
const void *p1,
const void *p2);
 
GraphEdge * next
pointer to the next edge
double x1
coordinates of the extreme points
int point1
indices of the parent sites that define the edge
class to provide facilities for giving warnings up to some maximum number of times and to provide glo...
double x
vector coordinates
VPoint(double _x, double _y)
ctor with initialisation
Selector operator*(const Selector &s1, const Selector &s2)
successive application of 2 selectors
double norm(const VPoint p)
norm of a vector
double vector_product(const VPoint &p1, const VPoint &p2)
2D vector product
double scalar_product(const VPoint &p1, const VPoint &p2)
scalar product