summaryrefslogtreecommitdiff
path: root/inc/TopTrans_CurveTransition.hxx
blob: 7e7105ee714302e4a93fe1d4322b0382e3bf20c4 (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
// 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 _TopTrans_CurveTransition_HeaderFile
#define _TopTrans_CurveTransition_HeaderFile

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

#ifndef _gp_Dir_HeaderFile
#include <gp_Dir.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _TopAbs_Orientation_HeaderFile
#include <TopAbs_Orientation.hxx>
#endif
#ifndef _TopAbs_State_HeaderFile
#include <TopAbs_State.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
class gp_Dir;


//! This algorithm  is used to  compute the transition <br>
//!          of a Curve intersecting a curvilinear boundary. <br>
//! <br>
//!          The geometric  elements  are described locally  at <br>
//!          the   intersection   point  by    a   second order <br>
//!          development. <br>
//! <br>
//!          The curve is described  by the intersection point, <br>
//!          the tangent vector and the curvature. <br>
//! <br>
//!          The  boundary  is described  by   a set  of  curve <br>
//!          elements, a curve element is either : <br>
//! <br>
//!          - A curve. <br>
//! <br>
//!          - A curve and an orientation  called a half-curve, <br>
//!          the boundary  of the curve is  before or after the <br>
//!          intersection point depending on the orientation. <br>
//! <br>
class TopTrans_CurveTransition  {
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); 
  }

  //! Create an empty  Curve Transition. <br>
  Standard_EXPORT   TopTrans_CurveTransition();
  //! Initialize a Transition with the local description <br>
//!          of a Curve. <br>
  Standard_EXPORT     void Reset(const gp_Dir& Tgt,const gp_Dir& Norm,const Standard_Real Curv) ;
  //! Initialize a Transition with the local description <br>
//!          of a straigth line. <br>
  Standard_EXPORT     void Reset(const gp_Dir& Tgt) ;
  //! Add  a curve element to the  boundary.    If Or is <br>
//!          REVERSED  the curve  is   before the intersection, <br>
//!          else if  Or  is FORWARD  the   curv  is after  the <br>
//!          intersection   and    if   Or  is   INTERNAL   the <br>
//!          intersection is in the middle of the curv. <br>
  Standard_EXPORT     void Compare(const Standard_Real Tole,const gp_Dir& Tang,const gp_Dir& Norm,const Standard_Real Curv,const TopAbs_Orientation S,const TopAbs_Orientation Or) ;
  //! returns   the  state   of  the   curve  before the <br>
//!          intersection, this is the position relative to the <br>
//!          boundary of a point very close to the intersection <br>
//!          on the negative side of the tangent. <br>
  Standard_EXPORT     TopAbs_State StateBefore() const;
  //! returns  the    state of  the  curve   after   the <br>
//!          intersection, this is the position relative to the <br>
//!          boundary of a point very close to the intersection <br>
//!          on the positive side of the tangent. <br>
  Standard_EXPORT     TopAbs_State StateAfter() const;





protected:





private:

  //! Compare two curvature and return true  if N1,C1 is <br>
//!          before N2,C2 in the edge orientation <br>
  Standard_EXPORT     Standard_Boolean IsBefore(const Standard_Real Tole,const Standard_Real Angl,const gp_Dir& Nor1,const Standard_Real Cur1,const gp_Dir& Nor2,const Standard_Real Cur2) const;
  //! Compare two angles at tolerance Tole <br>
  Standard_EXPORT     Standard_Integer Compare(const Standard_Real Ang1,const Standard_Real Ang2,const Standard_Real Tole) const;


gp_Dir myTgt;
gp_Dir myNorm;
Standard_Real myCurv;
Standard_Boolean Init;
gp_Dir TgtFirst;
gp_Dir NormFirst;
Standard_Real CurvFirst;
TopAbs_Orientation TranFirst;
gp_Dir TgtLast;
gp_Dir NormLast;
Standard_Real CurvLast;
TopAbs_Orientation TranLast;


};





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


#endif