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