File indexing completed on 2026-06-14 08:28:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _BRepBlend_SurfRstEvolRad_HeaderFile
0018 #define _BRepBlend_SurfRstEvolRad_HeaderFile
0019
0020 #include <Adaptor3d_CurveOnSurface.hxx>
0021 #include <Adaptor3d_Surface.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_SurfRstFunction.hxx>
0029 #include <math_Vector.hxx>
0030 #include <TColStd_Array1OfReal.hxx>
0031 #include <GeomAbs_Shape.hxx>
0032 #include <TColStd_Array1OfInteger.hxx>
0033 #include <TColgp_Array1OfPnt.hxx>
0034 #include <TColgp_Array1OfVec.hxx>
0035 #include <TColgp_Array1OfPnt2d.hxx>
0036 #include <TColgp_Array1OfVec2d.hxx>
0037
0038 class Law_Function;
0039 class math_Matrix;
0040 class gp_Circ;
0041 class Blend_Point;
0042
0043
0044
0045 class BRepBlend_SurfRstEvolRad : public Blend_SurfRstFunction
0046 {
0047 public:
0048 DEFINE_STANDARD_ALLOC
0049
0050 Standard_EXPORT BRepBlend_SurfRstEvolRad(const Handle(Adaptor3d_Surface)& Surf,
0051 const Handle(Adaptor3d_Surface)& SurfRst,
0052 const Handle(Adaptor2d_Curve2d)& Rst,
0053 const Handle(Adaptor3d_Curve)& CGuide,
0054 const Handle(Law_Function)& Evol);
0055
0056
0057 Standard_EXPORT Standard_Integer NbVariables() const Standard_OVERRIDE;
0058
0059
0060 Standard_EXPORT Standard_Integer NbEquations() const Standard_OVERRIDE;
0061
0062
0063
0064
0065
0066 Standard_EXPORT Standard_Boolean Value(const math_Vector& X, math_Vector& F) Standard_OVERRIDE;
0067
0068
0069
0070
0071
0072 Standard_EXPORT Standard_Boolean Derivatives(const math_Vector& X,
0073 math_Matrix& D) Standard_OVERRIDE;
0074
0075
0076
0077
0078
0079 Standard_EXPORT Standard_Boolean Values(const math_Vector& X,
0080 math_Vector& F,
0081 math_Matrix& D) Standard_OVERRIDE;
0082
0083 Standard_EXPORT void Set(const Handle(Adaptor3d_Surface)& SurfRef,
0084 const Handle(Adaptor2d_Curve2d)& RstRef);
0085
0086 Standard_EXPORT void Set(const Standard_Real Param) Standard_OVERRIDE;
0087
0088
0089
0090
0091
0092 Standard_EXPORT void Set(const Standard_Real First, const Standard_Real Last) Standard_OVERRIDE;
0093
0094 Standard_EXPORT void GetTolerance(math_Vector& Tolerance,
0095 const Standard_Real Tol) const Standard_OVERRIDE;
0096
0097 Standard_EXPORT void GetBounds(math_Vector& InfBound,
0098 math_Vector& SupBound) const Standard_OVERRIDE;
0099
0100 Standard_EXPORT Standard_Boolean IsSolution(const math_Vector& Sol,
0101 const Standard_Real Tol) Standard_OVERRIDE;
0102
0103
0104
0105 Standard_EXPORT virtual Standard_Real GetMinimalDistance() const Standard_OVERRIDE;
0106
0107 Standard_EXPORT const gp_Pnt& PointOnS() const Standard_OVERRIDE;
0108
0109 Standard_EXPORT const gp_Pnt& PointOnRst() const Standard_OVERRIDE;
0110
0111
0112 Standard_EXPORT const gp_Pnt2d& Pnt2dOnS() const Standard_OVERRIDE;
0113
0114
0115
0116 Standard_EXPORT const gp_Pnt2d& Pnt2dOnRst() const Standard_OVERRIDE;
0117
0118
0119 Standard_EXPORT Standard_Real ParameterOnRst() const Standard_OVERRIDE;
0120
0121 Standard_EXPORT Standard_Boolean IsTangencyPoint() const Standard_OVERRIDE;
0122
0123 Standard_EXPORT const gp_Vec& TangentOnS() const Standard_OVERRIDE;
0124
0125 Standard_EXPORT const gp_Vec2d& Tangent2dOnS() const Standard_OVERRIDE;
0126
0127 Standard_EXPORT const gp_Vec& TangentOnRst() const Standard_OVERRIDE;
0128
0129 Standard_EXPORT const gp_Vec2d& Tangent2dOnRst() const Standard_OVERRIDE;
0130
0131
0132
0133 Standard_EXPORT Standard_Boolean Decroch(const math_Vector& Sol,
0134 gp_Vec& NS,
0135 gp_Vec& TgS) const Standard_OVERRIDE;
0136
0137 Standard_EXPORT void Set(const Standard_Integer Choix);
0138
0139
0140
0141 Standard_EXPORT void Set(const BlendFunc_SectionShape TypeSection);
0142
0143 Standard_EXPORT void Section(const Standard_Real Param,
0144 const Standard_Real U,
0145 const Standard_Real V,
0146 const Standard_Real W,
0147 Standard_Real& Pdeb,
0148 Standard_Real& Pfin,
0149 gp_Circ& C);
0150
0151
0152 Standard_EXPORT Standard_Boolean IsRational() const Standard_OVERRIDE;
0153
0154
0155 Standard_EXPORT Standard_Real GetSectionSize() const Standard_OVERRIDE;
0156
0157
0158
0159 Standard_EXPORT void GetMinimalWeight(TColStd_Array1OfReal& Weigths) const Standard_OVERRIDE;
0160
0161
0162
0163 Standard_EXPORT Standard_Integer NbIntervals(const GeomAbs_Shape S) const Standard_OVERRIDE;
0164
0165
0166
0167
0168
0169 Standard_EXPORT void Intervals(TColStd_Array1OfReal& T,
0170 const GeomAbs_Shape S) const Standard_OVERRIDE;
0171
0172 Standard_EXPORT void GetShape(Standard_Integer& NbPoles,
0173 Standard_Integer& NbKnots,
0174 Standard_Integer& Degree,
0175 Standard_Integer& NbPoles2d) Standard_OVERRIDE;
0176
0177
0178
0179
0180
0181
0182 Standard_EXPORT void GetTolerance(const Standard_Real BoundTol,
0183 const Standard_Real SurfTol,
0184 const Standard_Real AngleTol,
0185 math_Vector& Tol3d,
0186 math_Vector& Tol1D) const Standard_OVERRIDE;
0187
0188 Standard_EXPORT void Knots(TColStd_Array1OfReal& TKnots) Standard_OVERRIDE;
0189
0190 Standard_EXPORT void Mults(TColStd_Array1OfInteger& TMults) Standard_OVERRIDE;
0191
0192
0193 Standard_EXPORT Standard_Boolean Section(const Blend_Point& P,
0194 TColgp_Array1OfPnt& Poles,
0195 TColgp_Array1OfVec& DPoles,
0196 TColgp_Array1OfPnt2d& Poles2d,
0197 TColgp_Array1OfVec2d& DPoles2d,
0198 TColStd_Array1OfReal& Weigths,
0199 TColStd_Array1OfReal& DWeigths) Standard_OVERRIDE;
0200
0201
0202
0203
0204 Standard_EXPORT Standard_Boolean Section(const Blend_Point& P,
0205 TColgp_Array1OfPnt& Poles,
0206 TColgp_Array1OfVec& DPoles,
0207 TColgp_Array1OfVec& D2Poles,
0208 TColgp_Array1OfPnt2d& Poles2d,
0209 TColgp_Array1OfVec2d& DPoles2d,
0210 TColgp_Array1OfVec2d& D2Poles2d,
0211 TColStd_Array1OfReal& Weigths,
0212 TColStd_Array1OfReal& DWeigths,
0213 TColStd_Array1OfReal& D2Weigths) Standard_OVERRIDE;
0214
0215 Standard_EXPORT void Section(const Blend_Point& P,
0216 TColgp_Array1OfPnt& Poles,
0217 TColgp_Array1OfPnt2d& Poles2d,
0218 TColStd_Array1OfReal& Weigths) Standard_OVERRIDE;
0219
0220 Standard_EXPORT void Resolution(const Standard_Integer IC2d,
0221 const Standard_Real Tol,
0222 Standard_Real& TolU,
0223 Standard_Real& TolV) const Standard_OVERRIDE;
0224
0225 protected:
0226 private:
0227 Handle(Adaptor3d_Surface) surf;
0228 Handle(Adaptor3d_Surface) surfrst;
0229 Handle(Adaptor2d_Curve2d) rst;
0230 Adaptor3d_CurveOnSurface cons;
0231 Handle(Adaptor3d_Curve) guide;
0232 Handle(Adaptor3d_Curve) tguide;
0233 gp_Pnt pts;
0234 gp_Pnt ptrst;
0235 gp_Pnt2d pt2ds;
0236 gp_Pnt2d pt2drst;
0237 Standard_Real prmrst;
0238 Standard_Boolean istangent;
0239 gp_Vec tgs;
0240 gp_Vec2d tg2ds;
0241 gp_Vec tgrst;
0242 gp_Vec2d tg2drst;
0243 Standard_Real ray;
0244 Standard_Real dray;
0245 Standard_Integer choix;
0246 gp_Pnt ptgui;
0247 gp_Vec d1gui;
0248 gp_Vec d2gui;
0249 gp_Vec nplan;
0250 Standard_Real normtg;
0251 Standard_Real theD;
0252 Handle(Adaptor3d_Surface) surfref;
0253 Handle(Adaptor2d_Curve2d) rstref;
0254 Standard_Real maxang;
0255 Standard_Real minang;
0256 Standard_Real distmin;
0257 BlendFunc_SectionShape mySShape;
0258 Convert_ParameterisationType myTConv;
0259 Handle(Law_Function) tevol;
0260 Handle(Law_Function) fevol;
0261 Standard_Real sg1;
0262 };
0263
0264 #endif