12 #ifndef ROOT_TGeoPolygon
13 #define ROOT_TGeoPolygon
19 class TGeoPolygon :
public TObject
24 kGeoFinishPolygon = BIT(10),
35 TObjArray *fDaughters;
38 Bool_t IsSegConvex(Int_t i1, Int_t i2=-1)
const;
39 Bool_t IsRightSided(
const Double_t *point, Int_t ind1, Int_t ind2)
const;
40 void OutscribedConvex();
44 TGeoPolygon(Int_t nvert);
46 virtual ~TGeoPolygon();
48 Double_t Area()
const;
49 Bool_t Contains(
const Double_t *point)
const;
50 virtual void Draw(Option_t *option=
"");
52 Int_t GetNvert()
const {
return fNvert;}
53 Int_t GetNconvex()
const {
return fNconvex;}
54 Double_t *GetX() {
return fX;}
55 Double_t *GetY() {
return fY;}
56 void GetVertices(Double_t *x, Double_t *y)
const;
57 void GetConvexVertices(Double_t *x, Double_t *y)
const;
58 Bool_t IsClockwise()
const {
return !TObject::TestBit(kGeoACW);}
59 Bool_t IsConvex()
const {
return TObject::TestBit(kGeoConvex);}
60 Bool_t IsFinished()
const {
return TObject::TestBit(kGeoFinishPolygon);}
61 Bool_t IsIllegalCheck()
const;
62 Double_t Safety(
const Double_t *point, Int_t &isegment)
const;
63 void SetConvex(Bool_t flag=kTRUE) {TObject::SetBit(kGeoConvex,flag);}
64 void SetXY(Double_t *x, Double_t *y);
65 void SetNextIndex(Int_t index=-1);
67 ClassDef(TGeoPolygon, 2)