1 // Copyright: Matra-Datavision 1995
2 // File: Select2D_SensitiveCircle.cxx
3 // Created: Mon Jan 30 16:58:02 1995
8 #include <Select2D_SensitiveCircle.ixx>
10 #include <Bnd_Box2d.hxx>
12 //=====================================================
14 // Purpose :Constructor
15 //=====================================================
18 Select2D_SensitiveCircle::
19 Select2D_SensitiveCircle(const Handle(SelectBasics_EntityOwner)& OwnerId,
20 const gp_Circ2d& aCirc,
21 const Select2D_TypeOfSelection atype):
22 Select2D_SensitiveEntity(OwnerId),
27 //=====================================================
30 //=====================================================
32 void Select2D_SensitiveCircle::
33 Areas (SelectBasics_ListOfBox2d& boxes)
36 BndLib::Add(myCirc,myCirc.Radius()/100.,abox);
41 //=====================================================
44 //=====================================================
45 Standard_Boolean Select2D_SensitiveCircle::
46 Matches (const Standard_Real X,
47 const Standard_Real Y,
48 const Standard_Real aTol,
51 Standard_Real TheTol = HasOwnTolerance()? myOwnTolerance : aTol;
54 case Select2D_TOS_INTERIOR:
56 if(myCirc.Contains(gp_Pnt2d(X,Y),TheTol) )
58 return Standard_True;}
60 {DMin=myCirc.Distance(gp_Pnt2d(X,Y));}
62 case Select2D_TOS_BOUNDARY:
64 DMin = myCirc.Distance(gp_Pnt2d(X,Y));
65 if(DMin<= TheTol) return Standard_True;
69 return Standard_False;
72 Standard_Boolean Select2D_SensitiveCircle::
73 Matches (const Standard_Real XMin,
74 const Standard_Real YMin,
75 const Standard_Real XMax,
76 const Standard_Real YMax,
77 const Standard_Real aTol)
79 Standard_Real TheTol = HasOwnTolerance()? myOwnTolerance : aTol;
81 Bnd_Box2d abox, BoundBox;
82 BoundBox.Update(XMin-TheTol,YMin-TheTol,XMax+TheTol,YMax+TheTol);
83 BndLib::Add(myCirc,myCirc.Radius()/100.,abox);
85 if(BoundBox.IsOut(abox)) return Standard_False;