File: GeomFill_CorrectedFrenet.hxx

package info (click to toggle)
oce 0.18.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 301,548 kB
  • sloc: cpp: 1,190,609; ansic: 67,225; sh: 11,630; tcl: 7,954; cs: 5,221; python: 2,867; java: 1,522; makefile: 342; xml: 292; perl: 37
file content (149 lines) | stat: -rw-r--r-- 5,431 bytes parent folder | download | duplicates (5)
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
// 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

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_GeomFill_CorrectedFrenet.hxx>

#include <Handle_GeomFill_Frenet.hxx>
#include <Handle_Law_Function.hxx>
#include <gp_Vec.hxx>
#include <Standard_Boolean.hxx>
#include <Handle_TColStd_HArray1OfReal.hxx>
#include <Handle_TColgp_HArray1OfVec.hxx>
#include <GeomFill_TrihedronLaw.hxx>
#include <Handle_GeomFill_TrihedronLaw.hxx>
#include <Standard_Real.hxx>
#include <Handle_Adaptor3d_HCurve.hxx>
#include <Standard_Integer.hxx>
#include <GeomAbs_Shape.hxx>
#include <GeomFill_Trihedron.hxx>
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
//! like Frenet with an Torsion's minimization
class GeomFill_CorrectedFrenet : public GeomFill_TrihedronLaw
{

public:

  
  Standard_EXPORT GeomFill_CorrectedFrenet();
  
  Standard_EXPORT GeomFill_CorrectedFrenet(const Standard_Boolean ForEvaluation);
  
  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>
  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
  //! at parameter <Param>
  //! Warning : It used only for C1 or C2 aproximation
  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
  //! first and seconde  derivatives.
  //! Warning : It used only for C2 aproximation
  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
  //! <S>.
  //! May be one if Continuity(me) >= <S>
  Standard_EXPORT virtual   Standard_Integer NbIntervals (const GeomAbs_Shape S)  const;
  
  //! Stores in <T> the  parameters bounding the intervals
  //! of continuity <S>.
  //!
  //! The array must provide  enough room to  accomodate
  //! for the parameters. i.e. T.Length() > NbIntervals()
  Standard_EXPORT virtual   void Intervals (TColStd_Array1OfReal& T, const GeomAbs_Shape S)  const;
  
  //! Tries to define the best trihedron mode
  //! for the curve. It can be:
  //! - Frenet
  //! - CorrectedFrenet
  //! - DiscreteTrihedron
  //! Warning: the CorrectedFrenet must be constructed
  //! with option ForEvaluation = True,
  //! the curve must be set by method SetCurve.
  Standard_EXPORT   GeomFill_Trihedron EvaluateBestMode() ;
  
  //! Get average value of Tangent(t) and Normal(t) it is usfull to
  //! make fast approximation of rational  surfaces.
  Standard_EXPORT virtual   void GetAverageLaw (gp_Vec& ATangent, gp_Vec& ANormal, gp_Vec& ABiNormal) ;
  
  //! Say if the law is Constant.
  Standard_EXPORT virtual   Standard_Boolean IsConstant()  const;
  
  //! Return True.
  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
  //! interval of continuity of Frenet. Returns True if FuncInt = 0
  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.
  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
  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;
  Standard_Boolean myForEvaluation;
  Handle(TColStd_HArray1OfReal) HArrPoles;
  Handle(TColStd_HArray1OfReal) HArrAngle;
  Handle(TColgp_HArray1OfVec) HArrTangent;
  Handle(TColgp_HArray1OfVec) HArrNormal;


};







#endif // _GeomFill_CorrectedFrenet_HeaderFile