File indexing completed on 2026-10-04 09:14:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _Extrema_GenExtPS_HeaderFile
0018 #define _Extrema_GenExtPS_HeaderFile
0019
0020 #include <Bnd_Sphere.hxx>
0021 #include <NCollection_Array1.hxx>
0022 #include <NCollection_HArray1.hxx>
0023 #include <Extrema_POnSurfParams.hxx>
0024 #include <NCollection_Array2.hxx>
0025 #include <NCollection_UBTreeFiller.hxx>
0026 #include <NCollection_Handle.hxx>
0027 #include <Extrema_FuncPSNorm.hxx>
0028 #include <Extrema_ExtFlag.hxx>
0029 #include <Extrema_ExtAlgo.hxx>
0030
0031 class Adaptor3d_Surface;
0032
0033
0034
0035
0036 class Extrema_GenExtPS
0037 {
0038 public:
0039 DEFINE_STANDARD_ALLOC
0040
0041
0042 Standard_EXPORT Extrema_GenExtPS();
0043
0044
0045 Standard_EXPORT ~Extrema_GenExtPS();
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P,
0060 const Adaptor3d_Surface& S,
0061 const int NbU,
0062 const int NbV,
0063 const double TolU,
0064 const double TolV,
0065 const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX,
0066 const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad);
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080 Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P,
0081 const Adaptor3d_Surface& S,
0082 const int NbU,
0083 const int NbV,
0084 const double Umin,
0085 const double Usup,
0086 const double Vmin,
0087 const double Vsup,
0088 const double TolU,
0089 const double TolV,
0090 const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX,
0091 const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad);
0092
0093 Standard_EXPORT void Initialize(const Adaptor3d_Surface& S,
0094 const int NbU,
0095 const int NbV,
0096 const double TolU,
0097 const double TolV);
0098
0099 Standard_EXPORT void Initialize(const Adaptor3d_Surface& S,
0100 const int NbU,
0101 const int NbV,
0102 const double Umin,
0103 const double Usup,
0104 const double Vmin,
0105 const double Vsup,
0106 const double TolU,
0107 const double TolV);
0108
0109
0110
0111
0112 Standard_EXPORT void Perform(const gp_Pnt& P);
0113
0114 Standard_EXPORT void SetFlag(const Extrema_ExtFlag F);
0115
0116 Standard_EXPORT void SetAlgo(const Extrema_ExtAlgo A);
0117
0118
0119 Standard_EXPORT bool IsDone() const;
0120
0121
0122 Standard_EXPORT int NbExt() const;
0123
0124
0125 Standard_EXPORT double SquareDistance(const int N) const;
0126
0127
0128 Standard_EXPORT const Extrema_POnSurf& Point(const int N) const;
0129
0130 private:
0131 Standard_EXPORT void BuildTree();
0132
0133 Standard_EXPORT void FindSolution(const gp_Pnt& P, const Extrema_POnSurfParams& theParams);
0134
0135
0136 Standard_EXPORT void GetGridPoints(const Adaptor3d_Surface& theSurf);
0137
0138
0139 Standard_EXPORT void BuildGrid(const gp_Pnt& thePoint);
0140
0141
0142 Standard_EXPORT const Extrema_POnSurfParams& ComputeEdgeParameters(
0143 const bool IsUEdge,
0144 const Extrema_POnSurfParams& theParam0,
0145 const Extrema_POnSurfParams& theParam1,
0146 const gp_Pnt& thePoints,
0147 const double theDiffTol);
0148
0149 private:
0150
0151 Extrema_GenExtPS(const Extrema_GenExtPS&) = delete;
0152 Extrema_GenExtPS& operator=(const Extrema_GenExtPS&) = delete;
0153
0154 private:
0155 bool myDone;
0156 bool myInit;
0157 double myumin;
0158 double myusup;
0159 double myvmin;
0160 double myvsup;
0161 int myusample;
0162 int myvsample;
0163 double mytolu;
0164 double mytolv;
0165
0166 NCollection_Array2<Extrema_POnSurfParams> myPoints;
0167 NCollection_Handle<NCollection_UBTree<int, Bnd_Sphere>> mySphereUBTree;
0168 occ::handle<NCollection_HArray1<Bnd_Sphere>> mySphereArray;
0169 Extrema_FuncPSNorm myF;
0170 const Adaptor3d_Surface* myS;
0171 Extrema_ExtFlag myFlag;
0172 Extrema_ExtAlgo myAlgo;
0173 occ::handle<NCollection_HArray1<double>> myUParams;
0174 occ::handle<NCollection_HArray1<double>> myVParams;
0175 NCollection_Array2<Extrema_POnSurfParams> myFacePntParams;
0176 NCollection_Array2<Extrema_POnSurfParams> myUEdgePntParams;
0177 NCollection_Array2<Extrema_POnSurfParams> myVEdgePntParams;
0178 Extrema_POnSurfParams myGridParam;
0179 };
0180
0181 #endif