1 // Created on: 1992-06-04 2 // Created by: Jacques GOUSSARD 3 // Copyright (c) 1992-1999 Matra Datavision 4 // Copyright (c) 1999-2014 OPEN CASCADE SAS 5 // 6 // This file is part of Open CASCADE Technology software library. 7 // 8 // This library is free software; you can redistribute it and/or modify it under 9 // the terms of the GNU Lesser General Public License version 2.1 as published 10 // by the Free Software Foundation, with special exception defined in the file 11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT 12 // distribution for complete text of the license and disclaimer of any warranty. 13 // 14 // Alternatively, this file may be used under the terms of Open CASCADE 15 // commercial license or contractual agreement. 16 17 #ifndef _Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_HeaderFile 18 #define _Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_HeaderFile 19 20 #include <Standard.hxx> 21 #include <Standard_DefineAlloc.hxx> 22 #include <Standard_Handle.hxx> 23 24 #include <Standard_Boolean.hxx> 25 #include <Standard_Real.hxx> 26 #include <Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter.hxx> 27 class Standard_DomainError; 28 class Standard_TypeMismatch; 29 class StdFail_NotDone; 30 class Adaptor2d_Curve2d; 31 class Geom2dInt_Geom2dCurveTool; 32 class Extrema_POnCurv2d; 33 class gp_Pnt2d; 34 class gp_Vec2d; 35 36 class Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter 37 { 38 public: 39 40 DEFINE_STANDARD_ALLOC 41 42 43 Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(); 44 45 //! Calculates the distance with a close point. 46 //! The close point is defined by the parameter value 47 //! U0. 48 //! The function F(u)=distance(P,C(u)) has an extremum 49 //! when g(u)=dF/du=0. The algorithm searchs a zero 50 //! near the close point. 51 //! TolU is used to decide to stop the iterations. 52 //! At the nth iteration, the criteria is: 53 //! abs(Un - Un-1) < TolU. 54 Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real TolU); 55 56 //! Calculates the distance with a close point. 57 //! The close point is defined by the parameter value 58 //! U0. 59 //! The function F(u)=distance(P,C(u)) has an extremum 60 //! when g(u)=dF/du=0. The algorithm searchs a zero 61 //! near the close point. 62 //! Zeros are searched between Umin et Usup. 63 //! TolU is used to decide to stop the iterations. 64 //! At the nth iteration, the criteria is: 65 //! abs(Un - Un-1) < TolU. 66 Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); 67 68 //! sets the fields of the algorithm. 69 Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); 70 71 //! the algorithm is done with the point P. 72 //! An exception is raised if the fields have not 73 //! been initialized. 74 Standard_EXPORT void Perform (const gp_Pnt2d& P, const Standard_Real U0); 75 76 //! Returns True if the distance is found. 77 Standard_EXPORT Standard_Boolean IsDone() const; 78 79 //! Returns the value of the extremum square distance. 80 Standard_EXPORT Standard_Real SquareDistance() const; 81 82 //! Returns True if the extremum distance is a minimum. 83 Standard_EXPORT Standard_Boolean IsMin() const; 84 85 //! Returns the point of the extremum distance. 86 Standard_EXPORT const Extrema_POnCurv2d& Point() const; 87 88 89 90 91 protected: 92 93 94 95 96 97 private: 98 99 100 101 Standard_Boolean myDone; 102 Standard_Real mytolU; 103 Standard_Real myumin; 104 Standard_Real myusup; 105 Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter myF; 106 107 108 }; 109 110 111 112 113 114 115 116 #endif // _Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_HeaderFile 117