File indexing completed on 2026-09-15 09:14:54
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _Blend_AppFunction_HeaderFile
0018 #define _Blend_AppFunction_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 #include <math_FunctionSetWithDerivatives.hxx>
0025 #include <Standard_Boolean.hxx>
0026 #include <math_Vector.hxx>
0027 #include <NCollection_Array1.hxx>
0028 #include <GeomAbs_Shape.hxx>
0029 #include <Standard_Integer.hxx>
0030 #include <gp_Pnt.hxx>
0031 #include <gp_Vec.hxx>
0032 #include <gp_Pnt2d.hxx>
0033 #include <gp_Vec2d.hxx>
0034 class math_Matrix;
0035 class gp_Pnt;
0036 class Blend_Point;
0037
0038
0039
0040
0041
0042
0043
0044 class Blend_AppFunction : public math_FunctionSetWithDerivatives
0045 {
0046 public:
0047 DEFINE_STANDARD_ALLOC
0048
0049
0050 Standard_EXPORT int NbVariables() const override = 0;
0051
0052
0053 Standard_EXPORT int NbEquations() const override = 0;
0054
0055
0056
0057
0058
0059 Standard_EXPORT bool Value(const math_Vector& X, math_Vector& F) override = 0;
0060
0061
0062
0063
0064
0065 Standard_EXPORT bool Derivatives(const math_Vector& X, math_Matrix& D) override = 0;
0066
0067
0068
0069
0070
0071 Standard_EXPORT bool Values(const math_Vector& X, math_Vector& F, math_Matrix& D) override = 0;
0072
0073
0074
0075
0076 Standard_EXPORT virtual void Set(const double Param) = 0;
0077
0078
0079
0080
0081
0082 Standard_EXPORT virtual void Set(const double First, const double Last) = 0;
0083
0084
0085
0086
0087 Standard_EXPORT virtual void GetTolerance(math_Vector& Tolerance, const double Tol) const = 0;
0088
0089
0090
0091
0092
0093 Standard_EXPORT virtual void GetBounds(math_Vector& InfBound, math_Vector& SupBound) const = 0;
0094
0095
0096
0097
0098
0099 Standard_EXPORT virtual bool IsSolution(const math_Vector& Sol, const double Tol) = 0;
0100
0101
0102
0103 Standard_EXPORT virtual double GetMinimalDistance() const = 0;
0104
0105
0106 Standard_EXPORT virtual const gp_Pnt& Pnt1() const = 0;
0107
0108
0109 Standard_EXPORT virtual const gp_Pnt& Pnt2() const = 0;
0110
0111
0112 Standard_EXPORT virtual bool IsRational() const = 0;
0113
0114
0115 Standard_EXPORT virtual double GetSectionSize() const = 0;
0116
0117
0118
0119 Standard_EXPORT virtual void GetMinimalWeight(NCollection_Array1<double>& Weigths) const = 0;
0120
0121
0122
0123 Standard_EXPORT virtual int NbIntervals(const GeomAbs_Shape S) const = 0;
0124
0125
0126
0127
0128
0129
0130
0131
0132 Standard_EXPORT virtual void Intervals(NCollection_Array1<double>& T,
0133 const GeomAbs_Shape S) const = 0;
0134
0135 Standard_EXPORT virtual void GetShape(int& NbPoles,
0136 int& NbKnots,
0137 int& Degree,
0138 int& NbPoles2d) = 0;
0139
0140
0141
0142
0143
0144
0145 Standard_EXPORT virtual void GetTolerance(const double BoundTol,
0146 const double SurfTol,
0147 const double AngleTol,
0148 math_Vector& Tol3d,
0149 math_Vector& Tol1D) const = 0;
0150
0151 Standard_EXPORT virtual void Knots(NCollection_Array1<double>& TKnots) = 0;
0152
0153 Standard_EXPORT virtual void Mults(NCollection_Array1<int>& TMults) = 0;
0154
0155
0156
0157
0158 Standard_EXPORT virtual bool Section(const Blend_Point& P,
0159 NCollection_Array1<gp_Pnt>& Poles,
0160 NCollection_Array1<gp_Vec>& DPoles,
0161 NCollection_Array1<gp_Pnt2d>& Poles2d,
0162 NCollection_Array1<gp_Vec2d>& DPoles2d,
0163 NCollection_Array1<double>& Weigths,
0164 NCollection_Array1<double>& DWeigths) = 0;
0165
0166 Standard_EXPORT virtual void Section(const Blend_Point& P,
0167 NCollection_Array1<gp_Pnt>& Poles,
0168 NCollection_Array1<gp_Pnt2d>& Poles2d,
0169 NCollection_Array1<double>& Weigths) = 0;
0170
0171
0172
0173
0174 Standard_EXPORT virtual bool Section(const Blend_Point& P,
0175 NCollection_Array1<gp_Pnt>& Poles,
0176 NCollection_Array1<gp_Vec>& DPoles,
0177 NCollection_Array1<gp_Vec>& D2Poles,
0178 NCollection_Array1<gp_Pnt2d>& Poles2d,
0179 NCollection_Array1<gp_Vec2d>& DPoles2d,
0180 NCollection_Array1<gp_Vec2d>& D2Poles2d,
0181 NCollection_Array1<double>& Weigths,
0182 NCollection_Array1<double>& DWeigths,
0183 NCollection_Array1<double>& D2Weigths) = 0;
0184
0185 Standard_EXPORT virtual void Resolution(const int IC2d,
0186 const double Tol,
0187 double& TolU,
0188 double& TolV) const = 0;
0189
0190
0191
0192 Standard_EXPORT double Parameter(const Blend_Point& P) const;
0193 };
0194
0195 #endif