// Copyright: Matra-Datavision 1995 // File: Select3D_SensitiveCurve.cxx // Created: Mon Mar 13 09:57:58 1995 // Author: Robert COUBLANC // #include #include #include #include #include #include //================================================== // Function: // Purpose : //================================================== Select3D_SensitiveCurve ::Select3D_SensitiveCurve(const Handle(SelectBasics_EntityOwner)& OwnerId, const Handle(Geom_Curve)& C, const Standard_Integer NbPoints): Select3D_SensitivePoly(OwnerId, NbPoints), mylastseg(0) { LoadPoints(C,NbPoints); } //================================================== // Function: Creation // Purpose : //================================================== Select3D_SensitiveCurve ::Select3D_SensitiveCurve(const Handle(SelectBasics_EntityOwner)& OwnerId, const Handle(TColgp_HArray1OfPnt)& ThePoints): Select3D_SensitivePoly(OwnerId, ThePoints), mylastseg(0) { } //================================================== // Function: Creation // Purpose : //================================================== Select3D_SensitiveCurve ::Select3D_SensitiveCurve(const Handle(SelectBasics_EntityOwner)& OwnerId, const TColgp_Array1OfPnt& ThePoints): Select3D_SensitivePoly(OwnerId, ThePoints), mylastseg(0) { } //================================================== // Function: Matches // Purpose : //================================================== Standard_Boolean Select3D_SensitiveCurve ::Matches(const Standard_Real X, const Standard_Real Y, const Standard_Real aTol, Standard_Real& DMin) { Standard_Integer Rank; TColgp_Array1OfPnt2d aArrayOf2dPnt(1, mynbpoints); Points2D(aArrayOf2dPnt); if (SelectBasics_BasicTool::MatchPolyg2d (aArrayOf2dPnt, X, Y, aTol, DMin, Rank)) { mylastseg = Rank; // compute and validate the depth (::Depth()) along the eyeline return Select3D_SensitiveEntity::Matches (X, Y, aTol, DMin); } return Standard_False; } //================================================== // Function: Matches // Purpose : know if a box touches the projected polygon // of the Curve. //================================================== Standard_Boolean Select3D_SensitiveCurve:: Matches (const Standard_Real XMin, const Standard_Real YMin, const Standard_Real XMax, const Standard_Real YMax, const Standard_Real aTol) { Bnd_Box2d BoundBox; BoundBox.Update(XMin-aTol,YMin-aTol,XMax+aTol,YMax+aTol); for(Standard_Integer j=0; jLength() was removed*/ Standard_Real Step = (aCurve->LastParameter()- aCurve->FirstParameter())/(NbP-1); Standard_Real Curparam = aCurve->FirstParameter(); for(Standard_Integer i=0;iValue(Curparam); Curparam+=Step; } } //======================================================================= //function : Dump //purpose : //======================================================================= void Select3D_SensitiveCurve::Dump(Standard_OStream& S,const Standard_Boolean FullDump) const { S<<"\tSensitiveCurve 3D :"<