50            : 
TNamed(
"TGraphDelaunay",
"TGraphDelaunay")
 
   87            : 
TNamed(
"TGraphDelaunay",
"TGraphDelaunay")
 
  240   Int_t tmp, ps = p, ns = 
n, ms = 
m;
 
  245   if (ns > ps) { tmp = ps; ps = ns; ns = tmp; swap = 
kTRUE;}
 
  246   if (ms > ns) { tmp = ns; ns = ms; ms = tmp; swap = 
kTRUE;}
 
  296   Int_t t1,t2,pa,na,ma,pb,nb,mb,p1=0,p2=0,
m,
n,p3=0;
 
  310   xcntr = xcntr/
fNhull+alittlebit;
 
  311   ycntr = ycntr/
fNhull+alittlebit;
 
  331      for (t2=1; t2<=
fNdt; t2++) {
 
  338            if ((pa==pb && na==nb) || (pa==pb && na==mb) || (pa==nb && na==mb)) {
 
  341            } 
else if ((pa==pb && ma==nb) || (pa==pb && ma==mb) || (pa==nb && ma==mb)) {
 
  344            } 
else if ((na==pb && ma==nb) || (na==pb && ma==mb) || (na==nb && ma==mb)) {
 
  351         if (s[0] && s[1] && s[2]) 
continue;
 
  357      for (
m=1; 
m<=3; 
m++) {
 
  374            xm = (
fXN[p1]+
fXN[p2])/2.;
 
  375            ym = (
fYN[p1]+
fYN[p2])/2.;
 
  451   Double_t lastdphi,dd1,dd2,dx1,dx2,dx3,dy1,dy2,dy3;
 
  452   Double_t u,
v,vNv1,vNv2,phi1,phi2,dphi,xx,yy;
 
  478   } 
else if (n2 == 
x) {
 
  492   for (
n=1; 
n<=ntry; 
n++) {
 
  499      if ((
m!=n1) && (
m!=n2) && (
m!=
x)) {
 
  509         dd1 = (dx2*dy1-dx1*dy2);
 
  510         dd2 = (dx1*dy2-dx2*dy1);
 
  513            u = (dx2*dy3-dx3*dy2)/dd1;
 
  514            v = (dx1*dy3-dx3*dy1)/dd2;
 
  515            if ((u<0) || (
v<0)) {
 
  520               vNv1 = (dx1*dx3+dy1*dy3)/
TMath::Sqrt(dx1*dx1+dy1*dy1);
 
  521               vNv2 = (dx2*dx3+dy2*dy3)/
TMath::Sqrt(dx2*dx2+dy2*dy2);
 
  560   Double_t x1,
x2,
x3,y1,y2,y3,
f1,f2,f3,u,
v,w;
 
  569   if (t2 > 
t1) { tmp = 
t1; 
t1 = t2; t2 = tmp; swap = 
kTRUE;}
 
  570   if (t3 > t2) { tmp = t2; t2 = t3; t3 = tmp; swap = 
kTRUE;}
 
  582   u  = (
f1*(y2-y3)+f2*(y3-y1)+f3*(y1-y2))/(
x1*(y2-y3)+
x2*(y3-y1)+
x3*(y1-y2));
 
  599   Int_t it, ntris_tried, p, 
n, 
m;
 
  600   Int_t i,j,k,
l,z,
f,
d,o1,o2,
a,
b,
t1,t2,t3;
 
  601   Int_t ndegen=0,degen=0,fdegen=0,o1degen=0,o2degen=0;
 
  604   Double_t dfo2,sin_sum,cfo1k,co2o1k,co2o1f;
 
  607   Double_t dx1,dx2,dx3,dy1,dy2,dy3,u,
v,dxz[3],dyz[3];
 
  636   for (it=1; it<=
fNdt; it++) {
 
  650   shouldbein = 
InHull(0,-1);
 
  651   if (!shouldbein) 
return thevalue;
 
  670      for (j=2; j<=k-1; j++) {
 
  672         for (i=1; i<=j-1; i++) {
 
  686            if ((d1+d2<=d3) || (d1+d3<=d2) || (d2+d3<=d1)) 
goto L90;
 
  700               if ((z==p) || (z==
n) || (z==
m)) 
goto L50;
 
  708                     if ((
l<i) || (
l<j) || (
l<k)) {
 
  751                        Warning(
"Interpolate", 
"Two of these three points are coincident %d %d %d",
a,
b,z);
 
  758                        Warning(
"Interpolate", 
"Two of these three points are coincident %d %d %d",
a,
b,z);
 
  775               for(
l=1; 
l<=3; 
l++) {
 
  787                  u = (dy3*dx2-dx3*dy2)*(dy1*dx2-dx1*dy2);
 
  788                  v = (dy3*dx1-dx3*dy1)*(dy2*dx1-dx2*dy1);
 
  790                  if ((u>=0) && (
v>=0)) {
 
  827               if ((cfo1k>co2o1k) || (cfo1k>co2o1f)) {
 
  843               if (sin_sum < -1.E-6) {
 
  880               if ((
fZ[o1-1]+
fZ[o2-1]) > (
fZ[
d-1]+
fZ[
f-1])) {
 
  921            "Point outside hull when expected inside: this point could be dodgy %g %g %d",
 
  922             xx, yy, ntris_tried);
 
static const double x2[5]
 
static const double x1[5]
 
static const double x3[11]
 
Graphics object made of three arrays X, Y and Z with the same number of points each.
 
Double_t GetYmin() const
Returns the Y minimum.
 
Double_t GetXmin() const
Returns the X minimum.
 
Double_t GetXmax() const
Returns the X maximum.
 
Double_t GetYmax() const
Returns the Y maximum.
 
TGraphDelaunay generates a Delaunay triangulation of a TGraph2D.
 
Int_t fNpoints
!Number of data points in fGraph2D
 
Double_t ComputeZ(Double_t x, Double_t y)
Return the z value corresponding to the (x,y) point in fGraph2D.
 
Int_t * fNTried
!Delaunay triangles storage of size fNdt
 
Double_t * fY
!Pointer to fGraph2D->fY
 
Double_t fXNmax
!Maximum value of fXN
 
Bool_t InHull(Int_t E, Int_t X) const
Is point e inside the hull defined by all points apart from x ?
 
Double_t fXNmin
!Minimum value of fXN
 
Double_t InterpolateOnPlane(Int_t TI1, Int_t TI2, Int_t TI3, Int_t E) const
Finds the z-value at point e given that it lies on the plane defined by t1,t2,t3.
 
Double_t * fYN
!fGraph2D vectors normalized of size fNpoints
 
Double_t fYoffset
!Parameters used to normalize user data
 
void FindHull()
Finds those points which make up the convex hull of the set.
 
void SetMarginBinsContent(Double_t z=0.)
Sets the histogram bin height for points lying outside the convex hull ie: the bins in the margin.
 
Double_t * fDist
!Array used to order mass points by distance
 
void FileIt(Int_t P, Int_t N, Int_t M)
Files the triangle defined by the 3 vertices p, n and m into the fxTried arrays.
 
Double_t fYNmin
!Minimum value of fYN
 
Int_t fTriedSize
!Real size of the fxTried arrays
 
Double_t * fX
!Pointer to fGraph2D->fX
 
TGraph2D * fGraph2D
!2D graph containing the user data
 
void FindAllTriangles()
Attempt to find all the Delaunay triangles of the point set.
 
Bool_t fAllTri
!True if FindAllTriangles() has been performed on fGraph2D
 
void SetMaxIter(Int_t n=100000)
Defines the number of triangles tested for a Delaunay triangle (number of iterations) before abandoni...
 
Int_t fMaxIter
!Maximum number of iterations to find Delaunay triangles
 
Bool_t fInit
!True if CreateTrianglesDataStructure() and FindHull() have been performed
 
Int_t * fOrder
!Array used to order mass points by distance
 
Bool_t Enclose(Int_t T1, Int_t T2, Int_t T3, Int_t Ex) const
Is point e inside the triangle t1-t2-t3 ?
 
virtual ~TGraphDelaunay()
TGraphDelaunay destructor.
 
Int_t fNdt
!Number of Delaunay triangles found
 
Double_t * fZ
!Pointer to fGraph2D->fZ
 
Double_t fYNmax
!Maximum value of fYN
 
Double_t fZout
!Histogram bin height for points lying outside the convex hull
 
void CreateTrianglesDataStructure()
Function used internally only.
 
Int_t fNhull
!Number of points in the hull
 
Double_t Interpolate(Double_t x, Double_t y)
Finds the Delaunay triangle that the point (xi,yi) sits in (if any) and calculate a z-value for it by...
 
TGraphDelaunay()
TGraphDelaunay default constructor.
 
Int_t * fHullPoints
!Hull points of size fNhull
 
Double_t * fXN
!fGraph2D vectors normalized of size fNpoints
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
#define Interpolate(a, x, b, y)
 
Short_t Max(Short_t a, Short_t b)
 
Bool_t IsInside(T xp, T yp, Int_t np, T *x, T *y)
Function which returns kTRUE if point xp,yp lies inside the polygon defined by the np points in array...
 
Double_t ATan2(Double_t y, Double_t x)
 
Double_t Sqrt(Double_t x)
 
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
 
constexpr Double_t TwoPi()