File indexing completed on 2026-10-02 09:11:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _AppDef_Compute_HeaderFile
0018 #define _AppDef_Compute_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 #include <AppParCurves_MultiCurve.hxx>
0025 #include <NCollection_Sequence.hxx>
0026 #include <AppParCurves_MultiBSpCurve.hxx>
0027 #include <Approx_ParametrizationType.hxx>
0028 #include <NCollection_Array1.hxx>
0029 #include <NCollection_HArray1.hxx>
0030 #include <AppParCurves_ConstraintCouple.hxx>
0031 #include <Standard_Integer.hxx>
0032 #include <AppParCurves_Constraint.hxx>
0033 #include <math_Vector.hxx>
0034 class AppDef_MultiLine;
0035 class AppDef_MyLineTool;
0036 class AppDef_MyGradientOfCompute;
0037 class AppDef_ParLeastSquareOfMyGradientOfCompute;
0038 class AppDef_ResConstraintOfMyGradientOfCompute;
0039 class AppDef_ParFunctionOfMyGradientOfCompute;
0040 class AppDef_Gradient_BFGSOfMyGradientOfCompute;
0041 class AppParCurves_MultiCurve;
0042 class AppParCurves_MultiBSpCurve;
0043
0044 class AppDef_Compute
0045 {
0046 public:
0047 DEFINE_STANDARD_ALLOC
0048
0049
0050
0051
0052
0053
0054
0055 Standard_EXPORT AppDef_Compute(
0056 const AppDef_MultiLine& Line,
0057 const int degreemin = 4,
0058 const int degreemax = 8,
0059 const double Tolerance3d = 1.0e-3,
0060 const double Tolerance2d = 1.0e-6,
0061 const int NbIterations = 5,
0062 const bool cutting = true,
0063 const Approx_ParametrizationType parametrization = Approx_ChordLength,
0064 const bool Squares = false);
0065
0066
0067
0068
0069
0070
0071
0072 Standard_EXPORT AppDef_Compute(const AppDef_MultiLine& Line,
0073 const math_Vector& Parameters,
0074 const int degreemin = 4,
0075 const int degreemax = 8,
0076 const double Tolerance3d = 1.0e-03,
0077 const double Tolerance2d = 1.0e-06,
0078 const int NbIterations = 5,
0079 const bool cutting = true,
0080 const bool Squares = false);
0081
0082
0083 Standard_EXPORT AppDef_Compute(const math_Vector& Parameters,
0084 const int degreemin = 4,
0085 const int degreemax = 8,
0086 const double Tolerance3d = 1.0e-03,
0087 const double Tolerance2d = 1.0e-06,
0088 const int NbIterations = 5,
0089 const bool cutting = true,
0090 const bool Squares = false);
0091
0092
0093 Standard_EXPORT AppDef_Compute(
0094 const int degreemin = 4,
0095 const int degreemax = 8,
0096 const double Tolerance3d = 1.0e-03,
0097 const double Tolerance2d = 1.0e-06,
0098 const int NbIterations = 5,
0099 const bool cutting = true,
0100 const Approx_ParametrizationType parametrization = Approx_ChordLength,
0101 const bool Squares = false);
0102
0103
0104 Standard_EXPORT void Init(const int degreemin = 4,
0105 const int degreemax = 8,
0106 const double Tolerance3d = 1.0e-03,
0107 const double Tolerance2d = 1.0e-06,
0108 const int NbIterations = 5,
0109 const bool cutting = true,
0110 const Approx_ParametrizationType parametrization = Approx_ChordLength,
0111 const bool Squares = false);
0112
0113
0114 Standard_EXPORT void Perform(const AppDef_MultiLine& Line);
0115
0116
0117 Standard_EXPORT void SetDegrees(const int degreemin, const int degreemax);
0118
0119
0120 Standard_EXPORT void SetTolerances(const double Tolerance3d, const double Tolerance2d);
0121
0122
0123 Standard_EXPORT void SetConstraints(const AppParCurves_Constraint firstC,
0124 const AppParCurves_Constraint lastC);
0125
0126
0127
0128
0129 Standard_EXPORT bool IsAllApproximated() const;
0130
0131
0132 Standard_EXPORT bool IsToleranceReached() const;
0133
0134
0135 Standard_EXPORT void Error(const int Index, double& tol3d, double& tol2d) const;
0136
0137
0138
0139 Standard_EXPORT int NbMultiCurves() const;
0140
0141
0142 Standard_EXPORT const AppParCurves_MultiCurve& Value(const int Index = 1) const;
0143
0144
0145 Standard_EXPORT AppParCurves_MultiCurve& ChangeValue(const int Index = 1);
0146
0147
0148 Standard_EXPORT const AppParCurves_MultiBSpCurve& SplineValue();
0149
0150
0151 Standard_EXPORT Approx_ParametrizationType Parametrization() const;
0152
0153
0154
0155 Standard_EXPORT const NCollection_Array1<double>& Parameters(const int Index = 1) const;
0156
0157 private:
0158
0159 Standard_EXPORT bool Compute(const AppDef_MultiLine& Line,
0160 const int fpt,
0161 const int lpt,
0162 math_Vector& Para,
0163 double& TheTol3d,
0164 double& TheTol2d,
0165 int& indbad);
0166
0167
0168 Standard_EXPORT bool ComputeCurve(const AppDef_MultiLine& Line,
0169 const int firspt,
0170 const int lastpt);
0171
0172
0173 Standard_EXPORT void Parameters(const AppDef_MultiLine& Line,
0174 const int firstP,
0175 const int LastP,
0176 math_Vector& TheParameters) const;
0177
0178 Standard_EXPORT double SearchFirstLambda(const AppDef_MultiLine& Line,
0179 const math_Vector& Para,
0180 const math_Vector& V,
0181 const int index) const;
0182
0183 Standard_EXPORT double SearchLastLambda(const AppDef_MultiLine& Line,
0184 const math_Vector& Para,
0185 const math_Vector& V,
0186 const int index) const;
0187
0188 Standard_EXPORT void FirstTangencyVector(const AppDef_MultiLine& Line,
0189 const int index,
0190 math_Vector& V) const;
0191
0192 Standard_EXPORT void LastTangencyVector(const AppDef_MultiLine& Line,
0193 const int index,
0194 math_Vector& V) const;
0195
0196 NCollection_Sequence<AppParCurves_MultiCurve> myMultiCurves;
0197 AppParCurves_MultiCurve TheMultiCurve;
0198 AppParCurves_MultiBSpCurve myspline;
0199 bool alldone;
0200 bool tolreached;
0201 Approx_ParametrizationType Par;
0202 occ::handle<NCollection_HArray1<double>> myParameters;
0203 occ::handle<NCollection_HArray1<double>> myfirstParam;
0204 NCollection_Sequence<occ::handle<NCollection_HArray1<double>>> myPar;
0205 NCollection_Sequence<double> Tolers3d;
0206 NCollection_Sequence<double> Tolers2d;
0207 occ::handle<NCollection_HArray1<AppParCurves_ConstraintCouple>> myConstraints;
0208 int mydegremin;
0209 int mydegremax;
0210 double mytol3d;
0211 double mytol2d;
0212 double currenttol3d;
0213 double currenttol2d;
0214 bool mycut;
0215 bool mysquares;
0216 int myitermax;
0217 AppParCurves_Constraint myfirstC;
0218 AppParCurves_Constraint mylastC;
0219 int myMultiLineNb;
0220 bool myIsClear;
0221 };
0222
0223 #endif