summaryrefslogtreecommitdiff
path: root/inc/GeomFill_CorrectedFrenet.hxx
blob: 1db6585ae60534f2b31550e68ac65efacb81ffd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _GeomFill_CorrectedFrenet_HeaderFile
#define _GeomFill_CorrectedFrenet_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_GeomFill_CorrectedFrenet_HeaderFile
#include <Handle_GeomFill_CorrectedFrenet.hxx>
#endif

#ifndef _Handle_GeomFill_Frenet_HeaderFile
#include <Handle_GeomFill_Frenet.hxx>
#endif
#ifndef _Handle_Law_Function_HeaderFile
#include <Handle_Law_Function.hxx>
#endif
#ifndef _gp_Vec_HeaderFile
#include <gp_Vec.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_TColStd_HArray1OfReal_HeaderFile
#include <Handle_TColStd_HArray1OfReal.hxx>
#endif
#ifndef _Handle_TColgp_HArray1OfVec_HeaderFile
#include <Handle_TColgp_HArray1OfVec.hxx>
#endif
#ifndef _GeomFill_TrihedronLaw_HeaderFile
#include <GeomFill_TrihedronLaw.hxx>
#endif
#ifndef _Handle_GeomFill_TrihedronLaw_HeaderFile
#include <Handle_GeomFill_TrihedronLaw.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_Adaptor3d_HCurve_HeaderFile
#include <Handle_Adaptor3d_HCurve.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _GeomAbs_Shape_HeaderFile
#include <GeomAbs_Shape.hxx>
#endif
class GeomFill_Frenet;
class Law_Function;
class TColStd_HArray1OfReal;
class TColgp_HArray1OfVec;
class Standard_OutOfRange;
class Standard_ConstructionError;
class GeomFill_TrihedronLaw;
class gp_Vec;
class TColStd_SequenceOfReal;
class TColgp_SequenceOfVec;
class Adaptor3d_HCurve;
class TColStd_Array1OfReal;


//!  Defined an Corrected Frenet  Trihedron  Law It is <br>
//!          like Frenet with an Torsion's minimization <br>
class GeomFill_CorrectedFrenet : public GeomFill_TrihedronLaw {

public:

  
  Standard_EXPORT   GeomFill_CorrectedFrenet();
  
  Standard_EXPORT   virtual  Handle_GeomFill_TrihedronLaw Copy() const;
  
  Standard_EXPORT   virtual  void SetCurve(const Handle(Adaptor3d_HCurve)& C) ;
  
  Standard_EXPORT   virtual  void SetInterval(const Standard_Real First,const Standard_Real Last) ;
  //! compute Triedrhon on curve at parameter <Param> <br>
  Standard_EXPORT   virtual  Standard_Boolean D0(const Standard_Real Param,gp_Vec& Tangent,gp_Vec& Normal,gp_Vec& BiNormal) ;
  //! compute Triedrhon and  derivative Trihedron  on curve <br>
//!          at parameter <Param> <br>
//!  Warning : It used only for C1 or C2 aproximation <br>
  Standard_EXPORT   virtual  Standard_Boolean D1(const Standard_Real Param,gp_Vec& Tangent,gp_Vec& DTangent,gp_Vec& Normal,gp_Vec& DNormal,gp_Vec& BiNormal,gp_Vec& DBiNormal) ;
  //! compute  Trihedron on curve <br>
//!          first and seconde  derivatives. <br>
//!  Warning : It used only for C2 aproximation <br>
  Standard_EXPORT   virtual  Standard_Boolean D2(const Standard_Real Param,gp_Vec& Tangent,gp_Vec& DTangent,gp_Vec& D2Tangent,gp_Vec& Normal,gp_Vec& DNormal,gp_Vec& D2Normal,gp_Vec& BiNormal,gp_Vec& DBiNormal,gp_Vec& D2BiNormal) ;
  //! Returns  the number  of  intervals for  continuity <br>
//!          <S>. <br>
//!          May be one if Continuity(me) >= <S> <br>
  Standard_EXPORT   virtual  Standard_Integer NbIntervals(const GeomAbs_Shape S) const;
  //! Stores in <T> the  parameters bounding the intervals <br>
//!          of continuity <S>. <br>
//! <br>
//!          The array must provide  enough room to  accomodate <br>
//!          for the parameters. i.e. T.Length() > NbIntervals() <br>
  Standard_EXPORT   virtual  void Intervals(TColStd_Array1OfReal& T,const GeomAbs_Shape S) const;
  //! Get average value of Tangent(t) and Normal(t) it is usfull to <br>
//!          make fast approximation of rational  surfaces. <br>
  Standard_EXPORT   virtual  void GetAverageLaw(gp_Vec& ATangent,gp_Vec& ANormal,gp_Vec& ABiNormal) ;
  //! Say if the law is Constant. <br>
  Standard_EXPORT   virtual  Standard_Boolean IsConstant() const;
  //! Return True. <br>
  Standard_EXPORT   virtual  Standard_Boolean IsOnlyBy3dCurve() const;




  DEFINE_STANDARD_RTTI(GeomFill_CorrectedFrenet)

protected:




private: 

  
  Standard_EXPORT     void Init() ;
  //!  Computes BSpline representation of Normal evolution at one <br>
//! interval of continuity of Frenet. Returns True if FuncInt = 0 <br>
  Standard_EXPORT     Standard_Boolean InitInterval(const Standard_Real First,const Standard_Real Last,const Standard_Real Step,Standard_Real& startAng,gp_Vec& prevTangent,gp_Vec& prevNormal,gp_Vec& aT,gp_Vec& aN,Handle(Law_Function)& FuncInt,TColStd_SequenceOfReal& SeqPoles,TColStd_SequenceOfReal& SeqAngle,TColgp_SequenceOfVec& SeqTangent,TColgp_SequenceOfVec& SeqNormal) const;
  //!  Computes angle of Normal evolution of Frenet between any two points on the curve. <br>
  Standard_EXPORT     Standard_Real CalcAngleAT(const gp_Vec& Tangent,const gp_Vec& Normal,const gp_Vec& prevTangent,const gp_Vec& prevNormal) const;
  //!  Get corrected value of angle of Normal evolution of Frenet <br>
  Standard_EXPORT     Standard_Real GetAngleAT(const Standard_Real P) const;

Handle_GeomFill_Frenet frenet;
Handle_Law_Function EvolAroundT;
Handle_Law_Function TLaw;
gp_Vec AT;
gp_Vec AN;
Standard_Boolean isFrenet;
Handle_TColStd_HArray1OfReal HArrPoles;
Handle_TColStd_HArray1OfReal HArrAngle;
Handle_TColgp_HArray1OfVec HArrTangent;
Handle_TColgp_HArray1OfVec HArrNormal;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif