// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _Extrema_GenExtPS_HeaderFile #define _Extrema_GenExtPS_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Handle_TColgp_HArray2OfPnt_HeaderFile #include #endif #ifndef _Extrema_HUBTreeOfSphere_HeaderFile #include #endif #ifndef _Handle_Bnd_HArray1OfSphere_HeaderFile #include #endif #ifndef _Extrema_FuncExtPS_HeaderFile #include #endif #ifndef _Adaptor3d_SurfacePtr_HeaderFile #include #endif #ifndef _Extrema_ExtFlag_HeaderFile #include #endif #ifndef _Extrema_ExtAlgo_HeaderFile #include #endif class TColgp_HArray2OfPnt; class Bnd_HArray1OfSphere; class StdFail_NotDone; class Standard_OutOfRange; class Standard_TypeMismatch; class gp_Pnt; class Adaptor3d_Surface; class Extrema_POnSurf; class math_Vector; //! It calculates all the extremum distances
//! between a point and a surface.
//! These distances can be minimum or maximum.
class Extrema_GenExtPS { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } Standard_EXPORT Extrema_GenExtPS(); //! It calculates all the distances.
//! The function F(u,v)=distance(P,S(u,v)) has an
//! extremum when gradient(F)=0. The algorithm searchs
//! all the zeros inside the definition ranges of the
//! surface.
//! NbU and NbV are used to locate the close points
//! to find the zeros. They must be great enough
//! such that if there is N extrema, there will
//! be N extrema between P and the grid.
//! TolU et TolV are used to determine the conditions
//! to stop the iterations; at the iteration number n:
//! (Un - Un-1) < TolU and (Vn - Vn-1) < TolV .
Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P,const Adaptor3d_Surface& S,const Standard_Integer NbU,const Standard_Integer NbV,const Standard_Real TolU,const Standard_Real TolV,const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX,const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); //! It calculates all the distances.
//! The function F(u,v)=distance(P,S(u,v)) has an
//! extremum when gradient(F)=0. The algorithm searchs
//! all the zeros inside the definition ranges of the
//! surface.
//! NbU and NbV are used to locate the close points
//! to find the zeros. They must be great enough
//! such that if there is N extrema, there will
//! be N extrema between P and the grid.
//! TolU et TolV are used to determine the conditions
//! to stop the iterations; at the iteration number n:
//! (Un - Un-1) < TolU and (Vn - Vn-1) < TolV .
Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P,const Adaptor3d_Surface& S,const Standard_Integer NbU,const Standard_Integer NbV,const Standard_Real Umin,const Standard_Real Usup,const Standard_Real Vmin,const Standard_Real Vsup,const Standard_Real TolU,const Standard_Real TolV,const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX,const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); Standard_EXPORT void Initialize(const Adaptor3d_Surface& S,const Standard_Integer NbU,const Standard_Integer NbV,const Standard_Real TolU,const Standard_Real TolV) ; Standard_EXPORT void Initialize(const Adaptor3d_Surface& S,const Standard_Integer NbU,const Standard_Integer NbV,const Standard_Real Umin,const Standard_Real Usup,const Standard_Real Vmin,const Standard_Real Vsup,const Standard_Real TolU,const Standard_Real TolV) ; //! the algorithm is done with the point P.
//! An exception is raised if the fields have not
//! been initialized.
Standard_EXPORT void Perform(const gp_Pnt& P) ; Standard_EXPORT void SetFlag(const Extrema_ExtFlag F) ; Standard_EXPORT void SetAlgo(const Extrema_ExtAlgo A) ; //! Returns True if the distances are found.
Standard_EXPORT Standard_Boolean IsDone() const; //! Returns the number of extremum distances.
Standard_EXPORT Standard_Integer NbExt() const; //! Returns the value of the Nth resulting square distance.
Standard_EXPORT Standard_Real SquareDistance(const Standard_Integer N) const; //! Returns the point of the Nth resulting distance.
Standard_EXPORT Extrema_POnSurf Point(const Standard_Integer N) const; protected: private: Standard_EXPORT Adaptor3d_SurfacePtr Bidon() const; Standard_EXPORT void BuildTree() ; Standard_EXPORT void FindSolution(const gp_Pnt& P,const math_Vector& UV,const Standard_Real PasU,const Standard_Real PasV,const Extrema_ExtFlag f) ; Standard_Boolean myDone; Standard_Boolean myInit; Standard_Real myumin; Standard_Real myusup; Standard_Real myvmin; Standard_Real myvsup; Standard_Integer myusample; Standard_Integer myvsample; Standard_Real mytolu; Standard_Real mytolv; Handle_TColgp_HArray2OfPnt mypoints; Extrema_HUBTreeOfSphere mySphereUBTree; Handle_Bnd_HArray1OfSphere mySphereArray; Extrema_FuncExtPS myF; Adaptor3d_SurfacePtr myS; Extrema_ExtFlag myFlag; Extrema_ExtAlgo myAlgo; }; // other Inline functions and methods (like "C++: function call" methods) #endif