/usr/include/root/TGeoPolygon.h is in libroot-geom-dev 5.34.19+dfsg-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | // @(#)root/geom:$Id$
// Author: Mihaela Gheata 05/01/04
/*************************************************************************
* 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_TGeoPolygon
#define ROOT_TGeoPolygon
#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TObjArray
#include "TObjArray.h"
#endif
////////////////////////////////////////////////////////////////////////////
// //
// TGeoPolygon - An arbitrary polygon defined by vertices. The vertices //
// have to be defined CLOCKWISE in the XY plane, making either a convex //
// or concave polygon. No test for malformed polygons is performed. //
// //
////////////////////////////////////////////////////////////////////////////
class TGeoPolygon : public TObject
{
public:
enum {
kGeoConvex = BIT(9),
kGeoFinishPolygon = BIT(10),
kGeoACW = BIT(11)
};
protected :
// data members
Int_t fNvert; // number of vertices (must be defined clockwise in XY plane)
Int_t fNconvex; // number of points of the outscribed convex polygon
Int_t *fInd; //[fNvert] list of vertex indices
Int_t *fIndc; //[fNconvex] indices of vertices of the outscribed convex polygon
Double_t *fX; //! pointer to list of current X coordinates of vertices
Double_t *fY; //! pointer to list of current Y coordinates of vertices
TObjArray *fDaughters; // list of concave daughters
private:
void ConvexCheck(); // force convexity checking
Bool_t IsSegConvex(Int_t i1, Int_t i2=-1) const;
Bool_t IsRightSided(const Double_t *point, Int_t ind1, Int_t ind2) const;
void OutscribedConvex();
public:
// constructors
TGeoPolygon();
TGeoPolygon(Int_t nvert);
// destructor
virtual ~TGeoPolygon();
// methods
Double_t Area() const;
Bool_t Contains(const Double_t *point) const;
virtual void Draw(Option_t *option="");
void FinishPolygon();
Int_t GetNvert() const {return fNvert;}
Int_t GetNconvex() const {return fNconvex;}
Double_t *GetX() {return fX;}
Double_t *GetY() {return fY;}
void GetVertices(Double_t *x, Double_t *y) const;
void GetConvexVertices(Double_t *x, Double_t *y) const;
Bool_t IsClockwise() const {return !TObject::TestBit(kGeoACW);}
Bool_t IsConvex() const {return TObject::TestBit(kGeoConvex);}
Bool_t IsFinished() const {return TObject::TestBit(kGeoFinishPolygon);}
Bool_t IsIllegalCheck() const;
Double_t Safety(const Double_t *point, Int_t &isegment) const;
void SetConvex(Bool_t flag=kTRUE) {TObject::SetBit(kGeoConvex,flag);}
void SetXY(Double_t *x, Double_t *y);
void SetNextIndex(Int_t index=-1);
ClassDef(TGeoPolygon, 2) // class for handling arbitrary polygons
};
#endif
|