File indexing completed on 2025-01-18 10:04:38
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _Plate_Plate_HeaderFile
0018 #define _Plate_Plate_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 #include <Standard_Integer.hxx>
0025 #include <Plate_SequenceOfPinpointConstraint.hxx>
0026 #include <Plate_SequenceOfLinearXYZConstraint.hxx>
0027 #include <Plate_SequenceOfLinearScalarConstraint.hxx>
0028 #include <TColgp_HArray2OfXYZ.hxx>
0029 #include <TColgp_SequenceOfXY.hxx>
0030 #include <Message_ProgressScope.hxx>
0031
0032 class Plate_PinpointConstraint;
0033 class Plate_LinearXYZConstraint;
0034 class Plate_LinearScalarConstraint;
0035 class Plate_GlobalTranslationConstraint;
0036 class Plate_LineConstraint;
0037 class Plate_PlaneConstraint;
0038 class Plate_SampledCurveConstraint;
0039 class Plate_GtoCConstraint;
0040 class Plate_FreeGtoCConstraint;
0041 class gp_XYZ;
0042 class gp_XY;
0043 class math_Matrix;
0044
0045
0046
0047
0048
0049 class Plate_Plate
0050 {
0051 public:
0052
0053 DEFINE_STANDARD_ALLOC
0054
0055
0056 Standard_EXPORT Plate_Plate();
0057
0058 Standard_EXPORT Plate_Plate(const Plate_Plate& Ref);
0059
0060 Standard_EXPORT Plate_Plate& Copy (const Plate_Plate& Ref);
0061 Plate_Plate& operator= (const Plate_Plate& Ref)
0062 {
0063 return Copy(Ref);
0064 }
0065
0066 Standard_EXPORT void Load (const Plate_PinpointConstraint& PConst);
0067
0068 Standard_EXPORT void Load (const Plate_LinearXYZConstraint& LXYZConst);
0069
0070 Standard_EXPORT void Load (const Plate_LinearScalarConstraint& LScalarConst);
0071
0072 Standard_EXPORT void Load (const Plate_GlobalTranslationConstraint& GTConst);
0073
0074 Standard_EXPORT void Load (const Plate_LineConstraint& LConst);
0075
0076 Standard_EXPORT void Load (const Plate_PlaneConstraint& PConst);
0077
0078 Standard_EXPORT void Load (const Plate_SampledCurveConstraint& SCConst);
0079
0080 Standard_EXPORT void Load (const Plate_GtoCConstraint& GtoCConst);
0081
0082 Standard_EXPORT void Load (const Plate_FreeGtoCConstraint& FGtoCConst);
0083
0084 Standard_EXPORT void SolveTI (const Standard_Integer ord = 4,
0085 const Standard_Real anisotropie = 1.0,
0086 const Message_ProgressRange& theProgress = Message_ProgressRange());
0087
0088
0089 Standard_EXPORT Standard_Boolean IsDone() const;
0090
0091 Standard_EXPORT void destroy();
0092 ~Plate_Plate()
0093 {
0094 destroy();
0095 }
0096
0097
0098
0099 Standard_EXPORT void Init();
0100
0101 Standard_EXPORT gp_XYZ Evaluate (const gp_XY& point2d) const;
0102
0103 Standard_EXPORT gp_XYZ EvaluateDerivative (const gp_XY& point2d, const Standard_Integer iu, const Standard_Integer iv) const;
0104
0105 Standard_EXPORT void CoefPol (Handle(TColgp_HArray2OfXYZ)& Coefs) const;
0106
0107 Standard_EXPORT void SetPolynomialPartOnly (const Standard_Boolean PPOnly = Standard_True);
0108
0109 Standard_EXPORT Standard_Integer Continuity() const;
0110
0111 Standard_EXPORT void UVBox (Standard_Real& UMin, Standard_Real& UMax, Standard_Real& VMin, Standard_Real& VMax) const;
0112
0113 Standard_EXPORT void UVConstraints (TColgp_SequenceOfXY& Seq) const;
0114
0115
0116
0117
0118 protected:
0119
0120
0121
0122
0123
0124 private:
0125
0126
0127 Standard_EXPORT Standard_Real SolEm (const gp_XY& point2d, const Standard_Integer iu, const Standard_Integer iv) const;
0128
0129 Standard_Real Polm (const gp_XY& point2d, const Standard_Integer iu, const Standard_Integer iv, const Standard_Integer idu, const Standard_Integer idv) const;
0130
0131 Standard_Integer& Deru (const Standard_Integer index) const;
0132
0133 Standard_Integer& Derv (const Standard_Integer index) const;
0134
0135 gp_XYZ& Solution (const Standard_Integer index) const;
0136
0137 gp_XY& Points (const Standard_Integer index) const;
0138
0139 Standard_EXPORT void SolveTI1 (const Standard_Integer IterationNumber,
0140 const Message_ProgressRange& theProgress = Message_ProgressRange());
0141
0142 Standard_EXPORT void SolveTI2 (const Standard_Integer IterationNumber,
0143 const Message_ProgressRange& theProgress = Message_ProgressRange());
0144
0145 Standard_EXPORT void SolveTI3 (const Standard_Integer IterationNumber,
0146 const Message_ProgressRange& theProgress = Message_ProgressRange());
0147
0148 Standard_EXPORT void fillXYZmatrix (math_Matrix& mat, const Standard_Integer i0, const Standard_Integer j0, const Standard_Integer ncc1, const Standard_Integer ncc2) const;
0149
0150
0151 Standard_Integer order;
0152 Standard_Integer n_el;
0153 Standard_Integer n_dim;
0154 Standard_Address solution;
0155 Standard_Address points;
0156 Standard_Address deru;
0157 Standard_Address derv;
0158 Standard_Boolean OK;
0159 Plate_SequenceOfPinpointConstraint myConstraints;
0160 Plate_SequenceOfLinearXYZConstraint myLXYZConstraints;
0161 Plate_SequenceOfLinearScalarConstraint myLScalarConstraints;
0162 Standard_Real ddu[10];
0163 Standard_Real ddv[10];
0164 Standard_Integer maxConstraintOrder;
0165 Standard_Boolean PolynomialPartOnly;
0166 Standard_Real Uold;
0167 Standard_Real Vold;
0168 Standard_Real U2;
0169 Standard_Real R;
0170 Standard_Real L;
0171
0172
0173 };
0174
0175
0176 #include <Plate_Plate.lxx>
0177
0178
0179
0180
0181
0182 #endif