summaryrefslogtreecommitdiff
path: root/inc/Bisector_BisecCC.hxx
blob: 37ea44085613caf7720ca3c3d91ea2d60f2f56c5 (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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
// 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 _Bisector_BisecCC_HeaderFile
#define _Bisector_BisecCC_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Bisector_BisecCC_HeaderFile
#include <Handle_Bisector_BisecCC.hxx>
#endif

#ifndef _Handle_Geom2d_Curve_HeaderFile
#include <Handle_Geom2d_Curve.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _TColStd_SequenceOfReal_HeaderFile
#include <TColStd_SequenceOfReal.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Bisector_PolyBis_HeaderFile
#include <Bisector_PolyBis.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _gp_Pnt2d_HeaderFile
#include <gp_Pnt2d.hxx>
#endif
#ifndef _Bisector_Curve_HeaderFile
#include <Bisector_Curve.hxx>
#endif
#ifndef _Handle_Geom2d_Geometry_HeaderFile
#include <Handle_Geom2d_Geometry.hxx>
#endif
#ifndef _GeomAbs_Shape_HeaderFile
#include <GeomAbs_Shape.hxx>
#endif
class Geom2d_Curve;
class Standard_DomainError;
class Standard_RangeError;
class gp_Pnt2d;
class Geom2d_Geometry;
class gp_Trsf2d;
class gp_Vec2d;
class Bisector_PolyBis;
class TColStd_SequenceOfReal;


//! Construct the bisector between two curves. <br>
//!          The curves can intersect only in their extremities. <br>
class Bisector_BisecCC : public Bisector_Curve {

public:

  
  Standard_EXPORT   Bisector_BisecCC();
  //! Constructs  the bisector  between the  curves <Cu1> <br>
//!          and <Cu2>. <br>
//! <br>
//!          <Side1>  (resp <Side2>) = 1   if the <br>
//!          bisector curve is on the left of <Cu1> (resp <Cu2>) <br>
//!          else <Side1> (resp <Side2>) = -1. <br>
//! <br>
//!          the Bisector is trimmed by the Point <Origin>. <br>
//!          <DistMax> is used to trim the bisector.The distance <br>
//!          between the points of the bisector and <Cu> is smaller <br>
//!          than <DistMax>. <br>
//! <br>
  Standard_EXPORT   Bisector_BisecCC(const Handle(Geom2d_Curve)& Cu1,const Handle(Geom2d_Curve)& Cu2,const Standard_Real Side1,const Standard_Real Side2,const gp_Pnt2d& Origin,const Standard_Real DistMax = 500);
  //! Computes the bisector  between the  curves <Cu1> <br>
//!          and <Cu2>. <br>
//! <br>
//!          <Side1>  (resp <Side2>) = 1   if the <br>
//!          bisector curve is on the left of <Cu1> (resp <Cu2>) <br>
//!          else <Side1> (resp <Side2>) = -1. <br>
//! <br>
//!          the Bisector is trimmed by the Point <Origin>. <br>
//! <br>
//!          <DistMax> is used to trim the bisector.The distance <br>
//!          between the points of the bisector and <Cu> is smaller <br>
//!          than <DistMax>. <br>
//! <br>
  Standard_EXPORT     void Perform(const Handle(Geom2d_Curve)& Cu1,const Handle(Geom2d_Curve)& Cu2,const Standard_Real Side1,const Standard_Real Side2,const gp_Pnt2d& Origin,const Standard_Real DistMax = 500) ;
  
  Standard_EXPORT     Standard_Boolean IsExtendAtStart() const;
  
  Standard_EXPORT     Standard_Boolean IsExtendAtEnd() const;
  
  Standard_EXPORT     void Reverse() ;
  
  Standard_EXPORT     Standard_Real ReversedParameter(const Standard_Real U) const;
  //! Returns the order of continuity of the curve. <br>//! Raised if N < 0. <br>
  Standard_EXPORT     Standard_Boolean IsCN(const Standard_Integer N) const;
  //! The parameter  on <me> is linked to  the parameter <br>
//!          on the first curve. This method creates the same bisector <br>
//!          where the curves are inversed. <br>
  Standard_EXPORT     Handle_Bisector_BisecCC ChangeGuide() const;
  
  Standard_EXPORT     Handle_Geom2d_Geometry Copy() const;
  
//!  Transformation of a geometric object. This tansformation <br>
//!  can be a translation, a rotation, a symmetry, a scaling <br>
//!  or a complex transformation obtained by combination of <br>
//!  the previous elementaries transformations. <br>
  Standard_EXPORT     void Transform(const gp_Trsf2d& T) ;
  
  Standard_EXPORT     Standard_Real FirstParameter() const;
  
  Standard_EXPORT     Standard_Real LastParameter() const;
  
  Standard_EXPORT     GeomAbs_Shape Continuity() const;
  //! If necessary,  breaks the  curve in  intervals  of <br>
//!          continuity  <C1>.    And  returns   the number   of <br>
//!          intervals. <br>
  Standard_EXPORT     Standard_Integer NbIntervals() const;
  //! Returns  the  first  parameter    of  the  current <br>
//!          interval. <br>
  Standard_EXPORT     Standard_Real IntervalFirst(const Standard_Integer Index) const;
  //! Returns  the  last  parameter    of  the  current <br>
//!          interval. <br>
  Standard_EXPORT     Standard_Real IntervalLast(const Standard_Integer Index) const;
  
  Standard_EXPORT     GeomAbs_Shape IntervalContinuity() const;
  
  Standard_EXPORT     Standard_Boolean IsClosed() const;
  
  Standard_EXPORT     Standard_Boolean IsPeriodic() const;
  //! Returns the point of parameter U. <br>
//!          Computes the distance between the current point and <br>
//!          the two curves I separate. <br>
//!          Computes the parameters on each curve corresponding <br>
//!          of the projection of the current point. <br>
  Standard_EXPORT     gp_Pnt2d ValueAndDist(const Standard_Real U,Standard_Real& U1,Standard_Real& U2,Standard_Real& Distance) const;
  //! Returns the point of parameter U. <br>
//!          Computes the distance between the current point and <br>
//!          the two curves I separate. <br>
//!          Computes the parameters on each curve corresponding <br>
//!          of the projection of the current point. <br>
  Standard_EXPORT     gp_Pnt2d ValueByInt(const Standard_Real U,Standard_Real& U1,Standard_Real& U2,Standard_Real& Distance) const;
  
  Standard_EXPORT     void D0(const Standard_Real U,gp_Pnt2d& P) const;
  
  Standard_EXPORT     void D1(const Standard_Real U,gp_Pnt2d& P,gp_Vec2d& V) const;
  
  Standard_EXPORT     void D2(const Standard_Real U,gp_Pnt2d& P,gp_Vec2d& V1,gp_Vec2d& V2) const;
  
  Standard_EXPORT     void D3(const Standard_Real U,gp_Pnt2d& P,gp_Vec2d& V1,gp_Vec2d& V2,gp_Vec2d& V3) const;
  
  Standard_EXPORT     gp_Vec2d DN(const Standard_Real U,const Standard_Integer N) const;
  
  Standard_EXPORT     Standard_Boolean IsEmpty() const;
  //! Returns the parameter on the curve1 of the projection <br>
//!          of the point of parameter U on <me>. <br>
  Standard_EXPORT     Standard_Real LinkBisCurve(const Standard_Real U) const;
  //! Returns the reciproque of LinkBisCurve. <br>
  Standard_EXPORT     Standard_Real LinkCurveBis(const Standard_Real U) const;
  
  Standard_EXPORT     Standard_Real Parameter(const gp_Pnt2d& P) const;
  
  Standard_EXPORT     Handle_Geom2d_Curve Curve(const Standard_Integer IndCurve) const;
  
  Standard_EXPORT    const Bisector_PolyBis& Polygon() const;
  
  Standard_EXPORT     void Dump(const Standard_Integer Deep = 0,const Standard_Integer Offset = 0) const;




  DEFINE_STANDARD_RTTI(Bisector_BisecCC)

protected:




private: 

  
  Standard_EXPORT     void Values(const Standard_Real U,const Standard_Integer N,gp_Pnt2d& P,gp_Vec2d& V1,gp_Vec2d& V2,gp_Vec2d& V3) const;
  
  Standard_EXPORT     void SupLastParameter() ;
  
  Standard_EXPORT     gp_Pnt2d Extension(const Standard_Real U,Standard_Real& U1,Standard_Real& U2,Standard_Real& Dist,gp_Vec2d& T1) const;
  
  Standard_EXPORT     Standard_Real SearchBound(const Standard_Real U1,const Standard_Real U2) const;
  
  Standard_EXPORT     void ComputePointEnd() ;
  
  Standard_EXPORT     void Curve(const Standard_Integer Index,const Handle(Geom2d_Curve)& C) ;
  
  Standard_EXPORT     void Sign(const Standard_Integer Index,const Standard_Real Sign) ;
  
  Standard_EXPORT     void Polygon(const Bisector_PolyBis& Poly) ;
  
  Standard_EXPORT     void DistMax(const Standard_Real DistMax) ;
  
  Standard_EXPORT     void IsConvex(const Standard_Integer Index,const Standard_Boolean IsConvex) ;
  
  Standard_EXPORT     void IsEmpty(const Standard_Boolean IsEmpty) ;
  
  Standard_EXPORT     void ExtensionStart(const Standard_Boolean ExtensionStart) ;
  
  Standard_EXPORT     void ExtensionEnd(const Standard_Boolean ExtensionEnd) ;
  
  Standard_EXPORT     void PointStart(const gp_Pnt2d& Point) ;
  
  Standard_EXPORT     void PointEnd(const gp_Pnt2d& Point) ;
  
  Standard_EXPORT     void StartIntervals(const TColStd_SequenceOfReal& StartIntervals) ;
  
  Standard_EXPORT     void EndIntervals(const TColStd_SequenceOfReal& EndIntervals) ;
  
  Standard_EXPORT     void FirstParameter(const Standard_Real U1) ;
  
  Standard_EXPORT     void LastParameter(const Standard_Real U1) ;

Handle_Geom2d_Curve curve1;
Handle_Geom2d_Curve curve2;
Standard_Real sign1;
Standard_Real sign2;
TColStd_SequenceOfReal startIntervals;
TColStd_SequenceOfReal endIntervals;
Standard_Integer currentInterval;
Bisector_PolyBis myPolygon;
Standard_Real shiftParameter;
Standard_Real distMax;
Standard_Boolean isEmpty;
Standard_Boolean isConvex1;
Standard_Boolean isConvex2;
Standard_Boolean extensionStart;
Standard_Boolean extensionEnd;
gp_Pnt2d pointStart;
gp_Pnt2d pointEnd;


};





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


#endif