File indexing completed on 2026-06-14 08:28:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _BlendFunc_Ruled_HeaderFile
0018 #define _BlendFunc_Ruled_HeaderFile
0019
0020 #include <Adaptor3d_Surface.hxx>
0021 #include <gp_Pnt.hxx>
0022 #include <gp_Vec.hxx>
0023 #include <gp_Vec2d.hxx>
0024 #include <Blend_Function.hxx>
0025 #include <math_Vector.hxx>
0026 #include <TColgp_Array1OfPnt.hxx>
0027 #include <TColgp_Array1OfVec.hxx>
0028 #include <TColStd_Array1OfReal.hxx>
0029 #include <GeomAbs_Shape.hxx>
0030 #include <TColStd_Array1OfInteger.hxx>
0031 #include <TColgp_Array1OfPnt2d.hxx>
0032 #include <TColgp_Array1OfVec2d.hxx>
0033
0034 class math_Matrix;
0035 class Blend_Point;
0036 class gp_Ax1;
0037
0038 class BlendFunc_Ruled : public Blend_Function
0039 {
0040 public:
0041 DEFINE_STANDARD_ALLOC
0042
0043 Standard_EXPORT BlendFunc_Ruled(const Handle(Adaptor3d_Surface)& S1,
0044 const Handle(Adaptor3d_Surface)& S2,
0045 const Handle(Adaptor3d_Curve)& C);
0046
0047
0048 Standard_EXPORT Standard_Integer NbEquations() const Standard_OVERRIDE;
0049
0050
0051
0052
0053
0054 Standard_EXPORT Standard_Boolean Value(const math_Vector& X, math_Vector& F) Standard_OVERRIDE;
0055
0056
0057
0058
0059
0060 Standard_EXPORT Standard_Boolean Derivatives(const math_Vector& X,
0061 math_Matrix& D) Standard_OVERRIDE;
0062
0063
0064
0065
0066
0067 Standard_EXPORT Standard_Boolean Values(const math_Vector& X,
0068 math_Vector& F,
0069 math_Matrix& D) Standard_OVERRIDE;
0070
0071 Standard_EXPORT void Set(const Standard_Real Param) Standard_OVERRIDE;
0072
0073 Standard_EXPORT void Set(const Standard_Real First, const Standard_Real Last) Standard_OVERRIDE;
0074
0075 Standard_EXPORT void GetTolerance(math_Vector& Tolerance,
0076 const Standard_Real Tol) const Standard_OVERRIDE;
0077
0078 Standard_EXPORT void GetBounds(math_Vector& InfBound,
0079 math_Vector& SupBound) const Standard_OVERRIDE;
0080
0081 Standard_EXPORT Standard_Boolean IsSolution(const math_Vector& Sol,
0082 const Standard_Real Tol) Standard_OVERRIDE;
0083
0084
0085
0086 Standard_EXPORT Standard_Real GetMinimalDistance() const Standard_OVERRIDE;
0087
0088 Standard_EXPORT const gp_Pnt& PointOnS1() const Standard_OVERRIDE;
0089
0090 Standard_EXPORT const gp_Pnt& PointOnS2() const Standard_OVERRIDE;
0091
0092 Standard_EXPORT Standard_Boolean IsTangencyPoint() const Standard_OVERRIDE;
0093
0094 Standard_EXPORT const gp_Vec& TangentOnS1() const Standard_OVERRIDE;
0095
0096 Standard_EXPORT const gp_Vec2d& Tangent2dOnS1() const Standard_OVERRIDE;
0097
0098 Standard_EXPORT const gp_Vec& TangentOnS2() const Standard_OVERRIDE;
0099
0100 Standard_EXPORT const gp_Vec2d& Tangent2dOnS2() const Standard_OVERRIDE;
0101
0102
0103
0104
0105
0106 Standard_EXPORT void Tangent(const Standard_Real U1,
0107 const Standard_Real V1,
0108 const Standard_Real U2,
0109 const Standard_Real V2,
0110 gp_Vec& TgFirst,
0111 gp_Vec& TgLast,
0112 gp_Vec& NormFirst,
0113 gp_Vec& NormLast) const Standard_OVERRIDE;
0114
0115 Standard_EXPORT Standard_Boolean GetSection(const Standard_Real Param,
0116 const Standard_Real U1,
0117 const Standard_Real V1,
0118 const Standard_Real U2,
0119 const Standard_Real V2,
0120 TColgp_Array1OfPnt& tabP,
0121 TColgp_Array1OfVec& tabV);
0122
0123
0124 Standard_EXPORT Standard_Boolean IsRational() const Standard_OVERRIDE;
0125
0126
0127 Standard_EXPORT Standard_Real GetSectionSize() const Standard_OVERRIDE;
0128
0129
0130
0131 Standard_EXPORT void GetMinimalWeight(TColStd_Array1OfReal& Weigths) const Standard_OVERRIDE;
0132
0133
0134
0135 Standard_EXPORT Standard_Integer NbIntervals(const GeomAbs_Shape S) const Standard_OVERRIDE;
0136
0137
0138
0139
0140
0141
0142
0143
0144 Standard_EXPORT void Intervals(TColStd_Array1OfReal& T,
0145 const GeomAbs_Shape S) const Standard_OVERRIDE;
0146
0147 Standard_EXPORT void GetShape(Standard_Integer& NbPoles,
0148 Standard_Integer& NbKnots,
0149 Standard_Integer& Degree,
0150 Standard_Integer& NbPoles2d) Standard_OVERRIDE;
0151
0152
0153
0154
0155
0156
0157 Standard_EXPORT void GetTolerance(const Standard_Real BoundTol,
0158 const Standard_Real SurfTol,
0159 const Standard_Real AngleTol,
0160 math_Vector& Tol3d,
0161 math_Vector& Tol1D) const Standard_OVERRIDE;
0162
0163 Standard_EXPORT void Knots(TColStd_Array1OfReal& TKnots) Standard_OVERRIDE;
0164
0165 Standard_EXPORT void Mults(TColStd_Array1OfInteger& TMults) Standard_OVERRIDE;
0166
0167
0168 Standard_EXPORT Standard_Boolean Section(const Blend_Point& P,
0169 TColgp_Array1OfPnt& Poles,
0170 TColgp_Array1OfVec& DPoles,
0171 TColgp_Array1OfVec& D2Poles,
0172 TColgp_Array1OfPnt2d& Poles2d,
0173 TColgp_Array1OfVec2d& DPoles2d,
0174 TColgp_Array1OfVec2d& D2Poles2d,
0175 TColStd_Array1OfReal& Weigths,
0176 TColStd_Array1OfReal& DWeigths,
0177 TColStd_Array1OfReal& D2Weigths) Standard_OVERRIDE;
0178
0179
0180 Standard_EXPORT Standard_Boolean Section(const Blend_Point& P,
0181 TColgp_Array1OfPnt& Poles,
0182 TColgp_Array1OfVec& DPoles,
0183 TColgp_Array1OfPnt2d& Poles2d,
0184 TColgp_Array1OfVec2d& DPoles2d,
0185 TColStd_Array1OfReal& Weigths,
0186 TColStd_Array1OfReal& DWeigths) Standard_OVERRIDE;
0187
0188 Standard_EXPORT void Section(const Blend_Point& P,
0189 TColgp_Array1OfPnt& Poles,
0190 TColgp_Array1OfPnt2d& Poles2d,
0191 TColStd_Array1OfReal& Weigths) Standard_OVERRIDE;
0192
0193 Standard_EXPORT gp_Ax1 AxeRot(const Standard_Real Prm);
0194
0195 Standard_EXPORT void Resolution(const Standard_Integer IC2d,
0196 const Standard_Real Tol,
0197 Standard_Real& TolU,
0198 Standard_Real& TolV) const Standard_OVERRIDE;
0199
0200 protected:
0201 private:
0202 Handle(Adaptor3d_Surface) surf1;
0203 Handle(Adaptor3d_Surface) surf2;
0204 Handle(Adaptor3d_Curve) curv;
0205 gp_Pnt pts1;
0206 gp_Pnt pts2;
0207 Standard_Boolean istangent;
0208 gp_Vec tg1;
0209 gp_Vec2d tg12d;
0210 gp_Vec tg2;
0211 gp_Vec2d tg22d;
0212 gp_Pnt ptgui;
0213 gp_Vec d1gui;
0214 gp_Vec d2gui;
0215 gp_Vec nplan;
0216 Standard_Real normtg;
0217 Standard_Real theD;
0218 Standard_Real distmin;
0219 };
0220
0221 #endif