summaryrefslogtreecommitdiff
path: root/inc/Bisector_BisecPC.hxx
blob: b375eefbc4dd3c4bb68fc5dc1eb3008775791cb3 (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
// 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_BisecPC_HeaderFile
#define _Bisector_BisecPC_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Bisector_BisecPC_HeaderFile
#include <Handle_Bisector_BisecPC.hxx>
#endif

#ifndef _Handle_Geom2d_Curve_HeaderFile
#include <Handle_Geom2d_Curve.hxx>
#endif
#ifndef _gp_Pnt2d_HeaderFile
#include <gp_Pnt2d.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 _Standard_Boolean_HeaderFile
#include <Standard_Boolean.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 TColStd_SequenceOfReal;


//! Provides the bisector between a point and a curve. <br>
//!          the curvature on the curve has to be monoton. <br>
//!          the point can't be on the curve exept at the extremitys. <br>
//! <br>
class Bisector_BisecPC : public Bisector_Curve {

public:

  
  Standard_EXPORT   Bisector_BisecPC();
  //! Constructs the bisector between the point <P> and <br>
//!          the curve <Cu>. <br>
//!          <Side> = 1. if the bisector curve is on the Left of <Cu> <br>
//!          else <Side> = -1. <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_BisecPC(const Handle(Geom2d_Curve)& Cu,const gp_Pnt2d& P,const Standard_Real Side,const Standard_Real DistMax = 500);
  //! Constructs the bisector between the point <P> and <br>
//!          the curve <Cu> Trimmed by <UMin> and <UMax> <br>
//!          <Side> = 1. if the bisector curve is on the Left of <Cu> <br>
//!          else <Side> = -1. <br>
//!  Warning: the bisector is supposed all over defined between <br>
//!          <UMin> and <UMax>. <br>
  Standard_EXPORT   Bisector_BisecPC(const Handle(Geom2d_Curve)& Cu,const gp_Pnt2d& P,const Standard_Real Side,const Standard_Real UMin,const Standard_Real UMax);
  //! Construct the bisector between the point <P> and <br>
//!          the curve <Cu>. <br>
//!          <Side> = 1. if the bisector curve is on the Left of <Cu> <br>
//!          else <Side> = -1. <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>
  Standard_EXPORT     void Perform(const Handle(Geom2d_Curve)& Cu,const gp_Pnt2d& P,const Standard_Real Side,const Standard_Real DistMax = 500) ;
  //! Returns True if the bisector is extended at start. <br>
  Standard_EXPORT     Standard_Boolean IsExtendAtStart() const;
  //! Returns True if the bisector is extended at end. <br>
  Standard_EXPORT     Standard_Boolean IsExtendAtEnd() const;
  
//!  Changes the direction of parametrization of <me>. <br>
//!  The orientation  of the curve is modified. If the curve <br>
//!  is bounded the StartPoint of the initial curve becomes the <br>
//!  EndPoint of the reversed curve  and the EndPoint of the initial <br>
//!  curve becomes the StartPoint of the reversed curve. <br>
  Standard_EXPORT     void Reverse() ;
  //! Returns the  parameter on the  reversed  curve for <br>
//!          the point of parameter U on <me>. <br>
  Standard_EXPORT     Standard_Real ReversedParameter(const Standard_Real U) 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) ;
  //! Returns the order of continuity of the curve. <br>//! Raised if N < 0. <br>
  Standard_EXPORT     Standard_Boolean IsCN(const Standard_Integer N) const;
  //! Value of the first parameter. <br>
  Standard_EXPORT     Standard_Real FirstParameter() const;
  //! Value of the last parameter. <br>
  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   distance   between  the  point  of <br>
//!          parameter U on <me> and my point or my curve. <br>
  Standard_EXPORT     Standard_Real Distance(const Standard_Real U) 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     void Dump(const Standard_Integer Deep = 0,const Standard_Integer Offset = 0) 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;
  //! Returns the parameter on <me> corresponding to <P>. <br>
  Standard_EXPORT     Standard_Real Parameter(const gp_Pnt2d& P) const;
  //! Returns <True> if the bisector is empty. <br>
  Standard_EXPORT     Standard_Boolean IsEmpty() const;




  DEFINE_STANDARD_RTTI(Bisector_BisecPC)

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 Extension(const Standard_Real U,gp_Pnt2d& P,gp_Vec2d& V1,gp_Vec2d& V2,gp_Vec2d& V3) const;
  //! Computes the interval where the bisector is defined. <br>
  Standard_EXPORT     void ComputeIntervals() ;
  
  Standard_EXPORT     void CuspFilter() ;
  
  Standard_EXPORT     Standard_Real SearchBound(const Standard_Real U1,const Standard_Real U2) const;
  
  Standard_EXPORT     void Init(const Handle(Geom2d_Curve)& Curve,const gp_Pnt2d& Point,const Standard_Real Sign,const TColStd_SequenceOfReal& StartIntervals,const TColStd_SequenceOfReal& EndIntervals,const Standard_Integer BisInterval,const Standard_Integer CurrentInterval,const Standard_Real ShiftParameter,const Standard_Real DistMax,const Standard_Boolean IsEmpty,const Standard_Boolean IsConvex,const Standard_Boolean ExtensionStart,const Standard_Boolean ExtensionEnd,const gp_Pnt2d& PointStartBis,const gp_Pnt2d& PointEndBis) ;

Handle_Geom2d_Curve curve;
gp_Pnt2d point;
Standard_Real sign;
TColStd_SequenceOfReal startIntervals;
TColStd_SequenceOfReal endIntervals;
Standard_Integer bisInterval;
Standard_Integer currentInterval;
Standard_Real shiftParameter;
Standard_Real distMax;
Standard_Boolean isEmpty;
Standard_Boolean isConvex;
Standard_Boolean extensionStart;
Standard_Boolean extensionEnd;
gp_Pnt2d pointStartBis;
gp_Pnt2d pointEndBis;


};





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


#endif