File indexing completed on 2026-09-23 09:16:52
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _BRepBlend_RstRstConstRad_HeaderFile
0018 #define _BRepBlend_RstRstConstRad_HeaderFile
0019
0020 #include <Adaptor3d_Surface.hxx>
0021 #include <Adaptor3d_CurveOnSurface.hxx>
0022 #include <gp_Pnt.hxx>
0023 #include <gp_Pnt2d.hxx>
0024 #include <gp_Vec.hxx>
0025 #include <gp_Vec2d.hxx>
0026 #include <BlendFunc_SectionShape.hxx>
0027 #include <Convert_ParameterisationType.hxx>
0028 #include <Blend_RstRstFunction.hxx>
0029 #include <math_Vector.hxx>
0030 #include <Blend_DecrochStatus.hxx>
0031 #include <NCollection_Array1.hxx>
0032 #include <GeomAbs_Shape.hxx>
0033 #include <Standard_Integer.hxx>
0034
0035 class math_Matrix;
0036 class gp_Circ;
0037 class Blend_Point;
0038
0039
0040
0041 class BRepBlend_RstRstConstRad : public Blend_RstRstFunction
0042 {
0043 public:
0044 DEFINE_STANDARD_ALLOC
0045
0046 Standard_EXPORT BRepBlend_RstRstConstRad(const occ::handle<Adaptor3d_Surface>& Surf1,
0047 const occ::handle<Adaptor2d_Curve2d>& Rst1,
0048 const occ::handle<Adaptor3d_Surface>& Surf2,
0049 const occ::handle<Adaptor2d_Curve2d>& Rst2,
0050 const occ::handle<Adaptor3d_Curve>& CGuide);
0051
0052
0053 Standard_EXPORT int NbVariables() const override;
0054
0055
0056 Standard_EXPORT int NbEquations() const override;
0057
0058
0059
0060
0061
0062 Standard_EXPORT bool Value(const math_Vector& X, math_Vector& F) override;
0063
0064
0065
0066
0067
0068 Standard_EXPORT bool Derivatives(const math_Vector& X, math_Matrix& D) override;
0069
0070
0071
0072
0073
0074 Standard_EXPORT bool Values(const math_Vector& X, math_Vector& F, math_Matrix& D) override;
0075
0076 Standard_EXPORT void Set(const occ::handle<Adaptor3d_Surface>& SurfRef1,
0077 const occ::handle<Adaptor2d_Curve2d>& RstRef1,
0078 const occ::handle<Adaptor3d_Surface>& SurfRef2,
0079 const occ::handle<Adaptor2d_Curve2d>& RstRef2);
0080
0081 Standard_EXPORT void Set(const double Param) override;
0082
0083
0084
0085
0086
0087 Standard_EXPORT void Set(const double First, const double Last) override;
0088
0089 Standard_EXPORT void GetTolerance(math_Vector& Tolerance, const double Tol) const override;
0090
0091 Standard_EXPORT void GetBounds(math_Vector& InfBound, math_Vector& SupBound) const override;
0092
0093 Standard_EXPORT bool IsSolution(const math_Vector& Sol, const double Tol) override;
0094
0095
0096
0097 Standard_EXPORT double GetMinimalDistance() const override;
0098
0099 Standard_EXPORT const gp_Pnt& PointOnRst1() const override;
0100
0101 Standard_EXPORT const gp_Pnt& PointOnRst2() const override;
0102
0103
0104 Standard_EXPORT const gp_Pnt2d& Pnt2dOnRst1() const override;
0105
0106
0107
0108 Standard_EXPORT const gp_Pnt2d& Pnt2dOnRst2() const override;
0109
0110
0111 Standard_EXPORT double ParameterOnRst1() const override;
0112
0113
0114 Standard_EXPORT double ParameterOnRst2() const override;
0115
0116 Standard_EXPORT bool IsTangencyPoint() const override;
0117
0118 Standard_EXPORT const gp_Vec& TangentOnRst1() const override;
0119
0120 Standard_EXPORT const gp_Vec2d& Tangent2dOnRst1() const override;
0121
0122 Standard_EXPORT const gp_Vec& TangentOnRst2() const override;
0123
0124 Standard_EXPORT const gp_Vec2d& Tangent2dOnRst2() const override;
0125
0126
0127
0128 Standard_EXPORT Blend_DecrochStatus Decroch(const math_Vector& Sol,
0129 gp_Vec& NRst1,
0130 gp_Vec& TgRst1,
0131 gp_Vec& NRst2,
0132 gp_Vec& TgRst2) const override;
0133
0134 Standard_EXPORT void Set(const double Radius, const int Choix);
0135
0136
0137
0138 Standard_EXPORT void Set(const BlendFunc_SectionShape TypeSection);
0139
0140
0141
0142 Standard_EXPORT bool CenterCircleRst1Rst2(const gp_Pnt& PtRst1,
0143 const gp_Pnt& PtRst2,
0144 const gp_Vec& np,
0145 gp_Pnt& Center,
0146 gp_Vec& VdMed) const;
0147
0148 Standard_EXPORT void Section(const double Param,
0149 const double U,
0150 const double V,
0151 double& Pdeb,
0152 double& Pfin,
0153 gp_Circ& C);
0154
0155
0156 Standard_EXPORT bool IsRational() const override;
0157
0158
0159 Standard_EXPORT double GetSectionSize() const override;
0160
0161
0162
0163 Standard_EXPORT void GetMinimalWeight(NCollection_Array1<double>& Weigths) const override;
0164
0165
0166
0167 Standard_EXPORT int NbIntervals(const GeomAbs_Shape S) const override;
0168
0169
0170
0171
0172
0173 Standard_EXPORT void Intervals(NCollection_Array1<double>& T,
0174 const GeomAbs_Shape S) const override;
0175
0176 Standard_EXPORT void GetShape(int& NbPoles, int& NbKnots, int& Degree, int& NbPoles2d) override;
0177
0178
0179
0180
0181
0182
0183 Standard_EXPORT void GetTolerance(const double BoundTol,
0184 const double SurfTol,
0185 const double AngleTol,
0186 math_Vector& Tol3d,
0187 math_Vector& Tol1D) const override;
0188
0189 Standard_EXPORT void Knots(NCollection_Array1<double>& TKnots) override;
0190
0191 Standard_EXPORT void Mults(NCollection_Array1<int>& TMults) override;
0192
0193
0194 Standard_EXPORT bool Section(const Blend_Point& P,
0195 NCollection_Array1<gp_Pnt>& Poles,
0196 NCollection_Array1<gp_Vec>& DPoles,
0197 NCollection_Array1<gp_Pnt2d>& Poles2d,
0198 NCollection_Array1<gp_Vec2d>& DPoles2d,
0199 NCollection_Array1<double>& Weigths,
0200 NCollection_Array1<double>& DWeigths) override;
0201
0202 Standard_EXPORT void Section(const Blend_Point& P,
0203 NCollection_Array1<gp_Pnt>& Poles,
0204 NCollection_Array1<gp_Pnt2d>& Poles2d,
0205 NCollection_Array1<double>& Weigths) override;
0206
0207
0208
0209
0210 Standard_EXPORT bool Section(const Blend_Point& P,
0211 NCollection_Array1<gp_Pnt>& Poles,
0212 NCollection_Array1<gp_Vec>& DPoles,
0213 NCollection_Array1<gp_Vec>& D2Poles,
0214 NCollection_Array1<gp_Pnt2d>& Poles2d,
0215 NCollection_Array1<gp_Vec2d>& DPoles2d,
0216 NCollection_Array1<gp_Vec2d>& D2Poles2d,
0217 NCollection_Array1<double>& Weigths,
0218 NCollection_Array1<double>& DWeigths,
0219 NCollection_Array1<double>& D2Weigths) override;
0220
0221 Standard_EXPORT void Resolution(const int IC2d,
0222 const double Tol,
0223 double& TolU,
0224 double& TolV) const override;
0225
0226 private:
0227 occ::handle<Adaptor3d_Surface> surf1;
0228 occ::handle<Adaptor3d_Surface> surf2;
0229 occ::handle<Adaptor2d_Curve2d> rst1;
0230 occ::handle<Adaptor2d_Curve2d> rst2;
0231 Adaptor3d_CurveOnSurface cons1;
0232 Adaptor3d_CurveOnSurface cons2;
0233 occ::handle<Adaptor3d_Curve> guide;
0234 occ::handle<Adaptor3d_Curve> tguide;
0235 gp_Pnt ptrst1;
0236 gp_Pnt ptrst2;
0237 gp_Pnt2d pt2drst1;
0238 gp_Pnt2d pt2drst2;
0239 double prmrst1;
0240 double prmrst2;
0241 bool istangent;
0242 gp_Vec tgrst1;
0243 gp_Vec2d tg2drst1;
0244 gp_Vec tgrst2;
0245 gp_Vec2d tg2drst2;
0246 double ray;
0247 int choix;
0248 gp_Pnt ptgui;
0249 gp_Vec d1gui;
0250 gp_Vec d2gui;
0251 gp_Vec nplan;
0252 double normtg;
0253 double theD;
0254 occ::handle<Adaptor3d_Surface> surfref1;
0255 occ::handle<Adaptor2d_Curve2d> rstref1;
0256 occ::handle<Adaptor3d_Surface> surfref2;
0257 occ::handle<Adaptor2d_Curve2d> rstref2;
0258 double maxang;
0259 double minang;
0260 double distmin;
0261 BlendFunc_SectionShape mySShape;
0262 Convert_ParameterisationType myTConv;
0263 };
0264
0265 #endif