summaryrefslogtreecommitdiff
path: root/inc/Law_Composite.hxx
blob: fa762df3af767f4de12a339b95040dbd055f9fcc (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
// 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_Composite_HeaderFile
#define _Law_Composite_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Law_Composite_HeaderFile
#include <Handle_Law_Composite.hxx>
#endif

#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_Law_Function_HeaderFile
#include <Handle_Law_Function.hxx>
#endif
#ifndef _Law_Laws_HeaderFile
#include <Law_Laws.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Law_Function_HeaderFile
#include <Law_Function.hxx>
#endif
#ifndef _GeomAbs_Shape_HeaderFile
#include <GeomAbs_Shape.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
class Law_Function;
class Standard_OutOfRange;
class TColStd_Array1OfReal;
class Law_Laws;


//! Loi  composite constituee  d une liste  de lois de <br>
//!          ranges consecutifs. <br>
//!          Cette implementation un peu lourde permet de reunir <br>
//!          en une seule loi des portions de loi construites de <br>
//!          facon independantes (par exemple en interactif) et <br>
//!          de lancer le walking d un coup a l echelle d une <br>
//!          ElSpine. <br>
//!          CET OBJET REPOND DONC A UN PROBLEME D IMPLEMENTATION <br>
//!          SPECIFIQUE AUX CONGES!!! <br>
class Law_Composite : public Law_Function {

public:

  //! Construct an empty Law <br>
  Standard_EXPORT   Law_Composite();
  //! Construct an empty, trimed Law <br>
  Standard_EXPORT   Law_Composite(const Standard_Real First,const Standard_Real Last,const Standard_Real Tol);
  
  Standard_EXPORT     GeomAbs_Shape Continuity() const;
  //! Returns  the number  of  intervals for  continuity <br>
//!          <S>. May be one if Continuity(me) >= <S> <br>
  Standard_EXPORT     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     void Intervals(TColStd_Array1OfReal& T,const GeomAbs_Shape S) const;
  //! Returns the value at parameter X. <br>
  Standard_EXPORT     Standard_Real Value(const Standard_Real X) ;
  //! Returns the value and the first derivative at parameter X. <br>
  Standard_EXPORT     void D1(const Standard_Real X,Standard_Real& F,Standard_Real& D) ;
  //! Returns the value, first and second derivatives <br>
//!          at parameter X. <br>
  Standard_EXPORT     void D2(const Standard_Real X,Standard_Real& F,Standard_Real& D,Standard_Real& D2) ;
  //!   Returns a  law equivalent of  <me>  between <br>
//!        parameters <First>  and <Last>. <Tol>  is used  to <br>
//!        test for 3d points confusion. <br>
//!        It is usfule to determines the derivatives <br>
//!        in these values <First> and <Last> if <br>
//!        the Law is not Cn. <br>
  Standard_EXPORT     Handle_Law_Function Trim(const Standard_Real PFirst,const Standard_Real PLast,const Standard_Real Tol) const;
  //! Returns the parametric bounds of the function. <br>
  Standard_EXPORT     void Bounds(Standard_Real& PFirst,Standard_Real& PLast) ;
  //! Returns the elementary  function of the composite used <br>
//!          to compute at parameter W. <br>
  Standard_EXPORT     Handle_Law_Function& ChangeElementaryLaw(const Standard_Real W) ;
  
  Standard_EXPORT     Law_Laws& ChangeLaws() ;
  
  Standard_EXPORT     Standard_Boolean IsPeriodic() const;
  
  Standard_EXPORT     void SetPeriodic() ;




  DEFINE_STANDARD_RTTI(Law_Composite)

protected:




private: 

  //! Set the current function. <br>
  Standard_EXPORT     void Prepare(Standard_Real& W) ;

Standard_Real first;
Standard_Real last;
Handle_Law_Function curfunc;
Law_Laws funclist;
Standard_Boolean periodic;
Standard_Real TFirst;
Standard_Real TLast;
Standard_Real PTol;


};





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


#endif