File indexing completed on 2026-05-29 08:16:02
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _GeomFill_CorrectedFrenet_HeaderFile
0018 #define _GeomFill_CorrectedFrenet_HeaderFile
0019
0020 #include <Standard.hxx>
0021
0022 #include <TColStd_HArray1OfReal.hxx>
0023 #include <TColgp_HArray1OfVec.hxx>
0024 #include <GeomFill_TrihedronLaw.hxx>
0025 #include <Standard_Real.hxx>
0026 #include <TColStd_SequenceOfReal.hxx>
0027 #include <TColgp_SequenceOfVec.hxx>
0028 #include <Standard_Integer.hxx>
0029 #include <GeomAbs_Shape.hxx>
0030 #include <TColStd_Array1OfReal.hxx>
0031 #include <GeomFill_Trihedron.hxx>
0032 class GeomFill_Frenet;
0033 class Law_Function;
0034
0035 class GeomFill_CorrectedFrenet;
0036 DEFINE_STANDARD_HANDLE(GeomFill_CorrectedFrenet, GeomFill_TrihedronLaw)
0037
0038
0039
0040 class GeomFill_CorrectedFrenet : public GeomFill_TrihedronLaw
0041 {
0042
0043 public:
0044 Standard_EXPORT GeomFill_CorrectedFrenet();
0045
0046 Standard_EXPORT GeomFill_CorrectedFrenet(const Standard_Boolean ForEvaluation);
0047
0048 Standard_EXPORT virtual Handle(GeomFill_TrihedronLaw) Copy() const Standard_OVERRIDE;
0049
0050
0051
0052 Standard_EXPORT virtual Standard_Boolean SetCurve(const Handle(Adaptor3d_Curve)& C)
0053 Standard_OVERRIDE;
0054
0055 Standard_EXPORT virtual void SetInterval(const Standard_Real First,
0056 const Standard_Real Last) Standard_OVERRIDE;
0057
0058
0059 Standard_EXPORT virtual Standard_Boolean D0(const Standard_Real Param,
0060 gp_Vec& Tangent,
0061 gp_Vec& Normal,
0062 gp_Vec& BiNormal) Standard_OVERRIDE;
0063
0064
0065
0066
0067 Standard_EXPORT virtual Standard_Boolean D1(const Standard_Real Param,
0068 gp_Vec& Tangent,
0069 gp_Vec& DTangent,
0070 gp_Vec& Normal,
0071 gp_Vec& DNormal,
0072 gp_Vec& BiNormal,
0073 gp_Vec& DBiNormal) Standard_OVERRIDE;
0074
0075
0076
0077
0078 Standard_EXPORT virtual Standard_Boolean D2(const Standard_Real Param,
0079 gp_Vec& Tangent,
0080 gp_Vec& DTangent,
0081 gp_Vec& D2Tangent,
0082 gp_Vec& Normal,
0083 gp_Vec& DNormal,
0084 gp_Vec& D2Normal,
0085 gp_Vec& BiNormal,
0086 gp_Vec& DBiNormal,
0087 gp_Vec& D2BiNormal) Standard_OVERRIDE;
0088
0089
0090
0091
0092 Standard_EXPORT virtual Standard_Integer NbIntervals(const GeomAbs_Shape S) const
0093 Standard_OVERRIDE;
0094
0095
0096
0097
0098
0099
0100 Standard_EXPORT virtual void Intervals(TColStd_Array1OfReal& T,
0101 const GeomAbs_Shape S) const Standard_OVERRIDE;
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111 Standard_EXPORT GeomFill_Trihedron EvaluateBestMode();
0112
0113
0114
0115 Standard_EXPORT virtual void GetAverageLaw(gp_Vec& ATangent,
0116 gp_Vec& ANormal,
0117 gp_Vec& ABiNormal) Standard_OVERRIDE;
0118
0119
0120 Standard_EXPORT virtual Standard_Boolean IsConstant() const Standard_OVERRIDE;
0121
0122
0123 Standard_EXPORT virtual Standard_Boolean IsOnlyBy3dCurve() const Standard_OVERRIDE;
0124
0125 DEFINE_STANDARD_RTTIEXT(GeomFill_CorrectedFrenet, GeomFill_TrihedronLaw)
0126
0127 protected:
0128 private:
0129 Standard_EXPORT void Init();
0130
0131
0132
0133 Standard_EXPORT Standard_Boolean InitInterval(const Standard_Real First,
0134 const Standard_Real Last,
0135 const Standard_Real Step,
0136 Standard_Real& startAng,
0137 gp_Vec& prevTangent,
0138 gp_Vec& prevNormal,
0139 gp_Vec& aT,
0140 gp_Vec& aN,
0141 Handle(Law_Function)& FuncInt,
0142 TColStd_SequenceOfReal& SeqPoles,
0143 TColStd_SequenceOfReal& SeqAngle,
0144 TColgp_SequenceOfVec& SeqTangent,
0145 TColgp_SequenceOfVec& SeqNormal) const;
0146
0147
0148 Standard_EXPORT Standard_Real CalcAngleAT(const gp_Vec& Tangent,
0149 const gp_Vec& Normal,
0150 const gp_Vec& prevTangent,
0151 const gp_Vec& prevNormal) const;
0152
0153
0154 Standard_EXPORT Standard_Real GetAngleAT(const Standard_Real P) const;
0155
0156 Handle(GeomFill_Frenet) frenet;
0157 Handle(Law_Function) EvolAroundT;
0158 Handle(Law_Function) TLaw;
0159 gp_Vec AT;
0160 gp_Vec AN;
0161 Standard_Boolean isFrenet;
0162 Standard_Boolean myForEvaluation;
0163 Handle(TColStd_HArray1OfReal) HArrPoles;
0164 Handle(TColStd_HArray1OfReal) HArrAngle;
0165 Handle(TColgp_HArray1OfVec) HArrTangent;
0166 Handle(TColgp_HArray1OfVec) HArrNormal;
0167 };
0168
0169 #endif