// @(#)root/hist:$Id: TGraphDelaunay2D.h,v 1.00
// Author: Olivier Couet, Luke Jones (Royal Holloway, University of London)

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TGraphDelaunay2D
#define ROOT_TGraphDelaunay2D


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGraphDelaunay2D                                                     //
//                                                                      //
// This class uses the Delaunay triangles technique to interpolate and  //
// render the data set.                                                 //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

#ifndef ROOT_Math_Delaunay2D
#include "Math/Delaunay2D.h"
#endif

class TGraph2D;
class TView;

class TGraphDelaunay2D : public TNamed {

public:


private:
   TGraphDelaunay2D(const TGraphDelaunay2D&); // Not implemented
   TGraphDelaunay2D& operator=(const TGraphDelaunay2D&); // Not implemented

protected:


   TGraph2D   *fGraph2D;     //!2D graph containing the user data

   ROOT::Math::Delaunay2D   fDelaunay; //! Delaunay interpolator class 

   //Triangles   fTriangles;   //!Triangles of Triangulation


public:

   typedef  ROOT::Math::Delaunay2D::Triangles Triangles; 

   TGraphDelaunay2D(TGraph2D *g = 0);

   Double_t  ComputeZ(Double_t x, Double_t y) { return fDelaunay.Interpolate(x,y); }
   void      FindAllTriangles() { fDelaunay.FindAllTriangles(); }

   TGraph2D *GetGraph2D() const {return fGraph2D;}
   Double_t  GetMarginBinsContent() const {return fDelaunay.ZOuterValue();}
   Int_t     GetNdt() const {return fDelaunay.NumberOfTriangles(); }
   Double_t  GetXNmin() const {return fDelaunay.XMin();}
   Double_t  GetXNmax() const {return fDelaunay.XMax();}
   Double_t  GetYNmin() const {return fDelaunay.YMin();}
   Double_t  GetYNmax() const {return fDelaunay.YMax();}

   void      SetMarginBinsContent(Double_t z=0.) { fDelaunay.SetZOuterValue(z); }

   Triangles::const_iterator begin() const { return fDelaunay.begin(); }
   Triangles::const_iterator end()  const { return fDelaunay.end(); }

   ClassDef(TGraphDelaunay2D,1)  // Delaunay triangulation

private:


};

#endif
 TGraphDelaunay2D.h:1
 TGraphDelaunay2D.h:2
 TGraphDelaunay2D.h:3
 TGraphDelaunay2D.h:4
 TGraphDelaunay2D.h:5
 TGraphDelaunay2D.h:6
 TGraphDelaunay2D.h:7
 TGraphDelaunay2D.h:8
 TGraphDelaunay2D.h:9
 TGraphDelaunay2D.h:10
 TGraphDelaunay2D.h:11
 TGraphDelaunay2D.h:12
 TGraphDelaunay2D.h:13
 TGraphDelaunay2D.h:14
 TGraphDelaunay2D.h:15
 TGraphDelaunay2D.h:16
 TGraphDelaunay2D.h:17
 TGraphDelaunay2D.h:18
 TGraphDelaunay2D.h:19
 TGraphDelaunay2D.h:20
 TGraphDelaunay2D.h:21
 TGraphDelaunay2D.h:22
 TGraphDelaunay2D.h:23
 TGraphDelaunay2D.h:24
 TGraphDelaunay2D.h:25
 TGraphDelaunay2D.h:26
 TGraphDelaunay2D.h:27
 TGraphDelaunay2D.h:28
 TGraphDelaunay2D.h:29
 TGraphDelaunay2D.h:30
 TGraphDelaunay2D.h:31
 TGraphDelaunay2D.h:32
 TGraphDelaunay2D.h:33
 TGraphDelaunay2D.h:34
 TGraphDelaunay2D.h:35
 TGraphDelaunay2D.h:36
 TGraphDelaunay2D.h:37
 TGraphDelaunay2D.h:38
 TGraphDelaunay2D.h:39
 TGraphDelaunay2D.h:40
 TGraphDelaunay2D.h:41
 TGraphDelaunay2D.h:42
 TGraphDelaunay2D.h:43
 TGraphDelaunay2D.h:44
 TGraphDelaunay2D.h:45
 TGraphDelaunay2D.h:46
 TGraphDelaunay2D.h:47
 TGraphDelaunay2D.h:48
 TGraphDelaunay2D.h:49
 TGraphDelaunay2D.h:50
 TGraphDelaunay2D.h:51
 TGraphDelaunay2D.h:52
 TGraphDelaunay2D.h:53
 TGraphDelaunay2D.h:54
 TGraphDelaunay2D.h:55
 TGraphDelaunay2D.h:56
 TGraphDelaunay2D.h:57
 TGraphDelaunay2D.h:58
 TGraphDelaunay2D.h:59
 TGraphDelaunay2D.h:60
 TGraphDelaunay2D.h:61
 TGraphDelaunay2D.h:62
 TGraphDelaunay2D.h:63
 TGraphDelaunay2D.h:64
 TGraphDelaunay2D.h:65
 TGraphDelaunay2D.h:66
 TGraphDelaunay2D.h:67
 TGraphDelaunay2D.h:68
 TGraphDelaunay2D.h:69
 TGraphDelaunay2D.h:70
 TGraphDelaunay2D.h:71
 TGraphDelaunay2D.h:72
 TGraphDelaunay2D.h:73
 TGraphDelaunay2D.h:74
 TGraphDelaunay2D.h:75
 TGraphDelaunay2D.h:76
 TGraphDelaunay2D.h:77
 TGraphDelaunay2D.h:78
 TGraphDelaunay2D.h:79
 TGraphDelaunay2D.h:80
 TGraphDelaunay2D.h:81
 TGraphDelaunay2D.h:82
 TGraphDelaunay2D.h:83
 TGraphDelaunay2D.h:84