summaryrefslogtreecommitdiff
path: root/inc/Law_Interpolate.hxx
blob: 18b234325fb235f8d4477e410151974bc4b1c1aa (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
// 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 _Law_Interpolate_HeaderFile
#define _Law_Interpolate_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_TColStd_HArray1OfReal_HeaderFile
#include <Handle_TColStd_HArray1OfReal.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_Law_BSpline_HeaderFile
#include <Handle_Law_BSpline.hxx>
#endif
#ifndef _Handle_TColStd_HArray1OfBoolean_HeaderFile
#include <Handle_TColStd_HArray1OfBoolean.hxx>
#endif
class TColStd_HArray1OfReal;
class Law_BSpline;
class TColStd_HArray1OfBoolean;
class StdFail_NotDone;
class Standard_ConstructionError;
class TColStd_Array1OfReal;


//! This  class   is used  to   interpolate a BsplineCurve <br>
//!          passing through    an  array of  points,   with   a C2 <br>
//!          Continuity if tangency  is not requested at the point. <br>
//!          If tangency is  requested at the  point the continuity <br>
//!          will be C1.  If Perodicity is requested the curve will <br>
//!          be  closed  and the junction will  be  the first point <br>
//!          given. The curve will than be only C1 <br>
//! <br>
//! <br>
class Law_Interpolate  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  //! Tolerance is to check if  the points are not too close <br>
//!          to one an  other.  It is  also  used to check   if the <br>
//!          tangent vector  is not too small.   There should be at <br>
//!          least 2 points. If PeriodicFlag is True then the curve <br>
//!          will be periodic be periodic <br>
  Standard_EXPORT   Law_Interpolate(const Handle(TColStd_HArray1OfReal)& Points,const Standard_Boolean PeriodicFlag,const Standard_Real Tolerance);
  //! Tolerance is to check if  the points are not too close <br>
//!          to one an  other.  It is  also  used to check   if the <br>
//!          tangent vector  is not too small.   There should be at <br>
//!          least 2 points. If PeriodicFlag is True then the curve <br>
//!          will be periodic be periodic <br>
  Standard_EXPORT   Law_Interpolate(const Handle(TColStd_HArray1OfReal)& Points,const Handle(TColStd_HArray1OfReal)& Parameters,const Standard_Boolean PeriodicFlag,const Standard_Real Tolerance);
  //! loads initial and final tangents if any. <br>
  Standard_EXPORT     void Load(const Standard_Real InitialTangent,const Standard_Real FinalTangent) ;
  //! loads the tangents. We should have as many tangents as <br>
//!          they are points  in the array if TangentFlags.Value(i) <br>
//!          is    Standard_True  use the tangent Tangents.Value(i) <br>
//!          otherwise the tangent is not constrained. <br>
//! <br>
  Standard_EXPORT     void Load(const TColStd_Array1OfReal& Tangents,const Handle(TColStd_HArray1OfBoolean)& TangentFlags) ;
  //! Clears the tangents if any <br>
  Standard_EXPORT     void ClearTangents() ;
  //! Makes the interpolation <br>
  Standard_EXPORT     void Perform() ;
  
  Standard_EXPORT    const Handle_Law_BSpline& Curve() const;
  
  Standard_EXPORT     Standard_Boolean IsDone() const;





protected:





private:

  //! Interpolates in a non periodic fashion. <br>
  Standard_EXPORT     void PerformNonPeriodic() ;
  //! Interpolates in a C1 periodic fashion. <br>
  Standard_EXPORT     void PerformPeriodic() ;


Standard_Real myTolerance;
Handle_TColStd_HArray1OfReal myPoints;
Standard_Boolean myIsDone;
Handle_Law_BSpline myCurve;
Handle_TColStd_HArray1OfReal myTangents;
Handle_TColStd_HArray1OfBoolean myTangentFlags;
Handle_TColStd_HArray1OfReal myParameters;
Standard_Boolean myPeriodic;
Standard_Boolean myTangentRequest;


};





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


#endif