File: IntAna_QuadQuadGeo.hxx

package info (click to toggle)
oce 0.18.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 301,548 kB
  • sloc: cpp: 1,190,609; ansic: 67,225; sh: 11,630; tcl: 7,954; cs: 5,221; python: 2,867; java: 1,522; makefile: 342; xml: 292; perl: 37
file content (277 lines) | stat: -rw-r--r-- 10,460 bytes parent folder | download | duplicates (5)
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
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
// 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 _IntAna_QuadQuadGeo_HeaderFile
#define _IntAna_QuadQuadGeo_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>

#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <IntAna_ResultType.hxx>
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <Standard_Real.hxx>
class StdFail_NotDone;
class Standard_DomainError;
class Standard_OutOfRange;
class gp_Pln;
class gp_Cylinder;
class gp_Sphere;
class gp_Cone;
class gp_Torus;
class gp_Pnt;
class gp_Lin;
class gp_Circ;
class gp_Elips;
class gp_Parab;
class gp_Hypr;


//! Geometric intersections between two natural quadrics
//! (Sphere , Cylinder , Cone , Pln from gp).
//! The possible intersections are :
//! - 1 point
//! - 1 or 2 line(s)
//! - 1 Point and 1 Line
//! - 1 circle
//! - 1 ellipse
//! - 1 parabola
//! - 1 or 2 hyperbola(s).
//! - Empty : there is no intersection between the two quadrics.
//! - Same  : the quadrics are identical
//! - NoGeometricSolution : there may be an intersection, but it
//! is necessary to use an analytic algorithm to determine
//! it. See class IntQuadQuad from IntAna.
class IntAna_QuadQuadGeo 
{
public:

  DEFINE_STANDARD_ALLOC

  
  //! Empty constructor.
  Standard_EXPORT IntAna_QuadQuadGeo();
  
  //! Creates the intersection between two planes.
  //! TolAng is the angular tolerance used to determine
  //! if the planes are parallel.
  //! Tol is the tolerance used to determine if the planes
  //! are identical (only when they are parallel).
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P1, const gp_Pln& P2, const Standard_Real TolAng, const Standard_Real Tol);
  
  //! Intersects two planes.
  //! TolAng is the angular tolerance used to determine
  //! if the planes are parallel.
  //! Tol is the tolerance used to determine if the planes
  //! are identical (only when they are parallel).
  Standard_EXPORT   void Perform (const gp_Pln& P1, const gp_Pln& P2, const Standard_Real TolAng, const Standard_Real Tol) ;
  
  //! Creates the intersection between a plane and a cylinder.
  //! TolAng is the angular tolerance used to determine
  //! if the axis of the cylinder is parallel to the plane.
  //! Tol is the tolerance used to determine if the result
  //! is a circle or an ellipse. If the maximum distance between
  //! the ellipse solution and the circle centered at the ellipse
  //! center is less than Tol, the result will be the circle.
  //! H is the height of the cylinder <Cyl>. It is  used to check
  //! whether the plane and cylinder are parallel.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P, const gp_Cylinder& C, const Standard_Real Tolang, const Standard_Real Tol, const Standard_Real H = 0);
  
  //! Intersects a plane and a cylinder.
  //! TolAng is the angular tolerance used to determine
  //! if the axis of the cylinder is parallel to the plane.
  //! Tol is the tolerance used to determine if the result
  //! is a circle or an ellipse. If the maximum distance between
  //! the ellipse solution and the circle centered at the ellipse
  //! center is less than Tol, the result will be the circle.
  //! H is the height of the cylinder <Cyl>. It is  used to check
  //! whether the plane and cylinder are parallel.
  Standard_EXPORT   void Perform (const gp_Pln& P, const gp_Cylinder& C, const Standard_Real Tolang, const Standard_Real Tol, const Standard_Real H = 0) ;
  
  //! Creates the intersection between a plane and a sphere.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P, const gp_Sphere& S);
  
  //! Intersects a plane and a sphere.
  Standard_EXPORT   void Perform (const gp_Pln& P, const gp_Sphere& S) ;
  
  //! Creates the intersection between a plane and a cone.
  //! TolAng is the angular tolerance used to determine
  //! if the axis of the cone is parallel or perpendicular
  //! to the plane, and if the generating line of the cone
  //! is parallel to the plane.
  //! Tol is the tolerance used to determine if the apex
  //! of the cone is in the plane.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P, const gp_Cone& C, const Standard_Real Tolang, const Standard_Real Tol);
  
  //! Intersects a plane and a cone.
  //! TolAng is the angular tolerance used to determine
  //! if the axis of the cone is parallel or perpendicular
  //! to the plane, and if the generating line of the cone
  //! is parallel to the plane.
  //! Tol is the tolerance used to determine if the apex
  //! of the cone is in the plane.
  Standard_EXPORT   void Perform (const gp_Pln& P, const gp_Cone& C, const Standard_Real Tolang, const Standard_Real Tol) ;
  
  //! Creates the intersection between two cylinders.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl1, const gp_Cylinder& Cyl2, const Standard_Real Tol);
  
  //! Intersects two cylinders
  Standard_EXPORT   void Perform (const gp_Cylinder& Cyl1, const gp_Cylinder& Cyl2, const Standard_Real Tol) ;
  
  //! Creates the intersection between a Cylinder and a Sphere.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl, const gp_Sphere& Sph, const Standard_Real Tol);
  
  //! Intersects a cylinder and a sphere.
  Standard_EXPORT   void Perform (const gp_Cylinder& Cyl, const gp_Sphere& Sph, const Standard_Real Tol) ;
  
  //! Creates the intersection between a Cylinder and a Cone
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl, const gp_Cone& Con, const Standard_Real Tol);
  
  //! Intersects a cylinder and a cone.
  Standard_EXPORT   void Perform (const gp_Cylinder& Cyl, const gp_Cone& Con, const Standard_Real Tol) ;
  
  //! Creates the intersection between two Spheres.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Sphere& Sph1, const gp_Sphere& Sph2, const Standard_Real Tol);
  
  //! Intersects a two spheres.
  Standard_EXPORT   void Perform (const gp_Sphere& Sph1, const gp_Sphere& Sph2, const Standard_Real Tol) ;
  
  //! Creates the intersection beween a Sphere and a Cone.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Sphere& Sph, const gp_Cone& Con, const Standard_Real Tol);
  
  //! Intersects a sphere and a cone.
  Standard_EXPORT   void Perform (const gp_Sphere& Sph, const gp_Cone& Con, const Standard_Real Tol) ;
  
  //! Creates the intersection beween two cones.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cone& Con1, const gp_Cone& Con2, const Standard_Real Tol);
  
  //! Intersects two cones.
  Standard_EXPORT   void Perform (const gp_Cone& Con1, const gp_Cone& Con2, const Standard_Real Tol) ;
  
  //! Creates the intersection beween plane and torus.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& Pln, const gp_Torus& Tor, const Standard_Real Tol);
  
  //! Intersects plane and torus.
  Standard_EXPORT   void Perform (const gp_Pln& Pln, const gp_Torus& Tor, const Standard_Real Tol) ;
  
  //! Creates the intersection beween cylinder and torus.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl, const gp_Torus& Tor, const Standard_Real Tol);
  
  //! Intersects cylinder and torus.
  Standard_EXPORT   void Perform (const gp_Cylinder& Cyl, const gp_Torus& Tor, const Standard_Real Tol) ;
  
  //! Creates the intersection beween cone and torus.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cone& Con, const gp_Torus& Tor, const Standard_Real Tol);
  
  //! Intersects cone and torus.
  Standard_EXPORT   void Perform (const gp_Cone& Con, const gp_Torus& Tor, const Standard_Real Tol) ;
  
  //! Creates the intersection beween sphere and torus.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Sphere& Sph, const gp_Torus& Tor, const Standard_Real Tol);
  
  //! Intersects sphere and torus.
  Standard_EXPORT   void Perform (const gp_Sphere& Sph, const gp_Torus& Tor, const Standard_Real Tol) ;
  
  //! Creates the intersection beween two toruses.
  Standard_EXPORT IntAna_QuadQuadGeo(const gp_Torus& Tor1, const gp_Torus& Tor2, const Standard_Real Tol);
  
  //! Intersects two toruses.
  Standard_EXPORT   void Perform (const gp_Torus& Tor1, const gp_Torus& Tor2, const Standard_Real Tol) ;
  
  //! Returns Standard_True if the computation was successful.
      Standard_Boolean IsDone()  const;
  
  //! Returns the type of intersection.
      IntAna_ResultType TypeInter()  const;
  
  //! Returns the number of interesections.
  //! The possible intersections are :
  //! - 1 point
  //! - 1 or 2 line(s)
  //! - 1 Point and 1 Line
  //! - 1 circle
  //! - 1 ellipse
  //! - 1 parabola
  //! - 1 or 2 hyperbola(s).
      Standard_Integer NbSolutions()  const;
  
  //! Returns the point solution of range Num.
  Standard_EXPORT   gp_Pnt Point (const Standard_Integer Num)  const;
  
  //! Returns the line solution of range Num.
  Standard_EXPORT   gp_Lin Line (const Standard_Integer Num)  const;
  
  //! Returns the circle solution of range Num.
  Standard_EXPORT   gp_Circ Circle (const Standard_Integer Num)  const;
  
  //! Returns the ellipse solution of range Num.
  Standard_EXPORT   gp_Elips Ellipse (const Standard_Integer Num)  const;
  
  //! Returns the parabola solution of range Num.
  Standard_EXPORT   gp_Parab Parabola (const Standard_Integer Num)  const;
  
  //! Returns the hyperbola solution of range Num.
  Standard_EXPORT   gp_Hypr Hyperbola (const Standard_Integer Num)  const;
  
  Standard_EXPORT   Standard_Boolean HasCommonGen()  const;
  
  Standard_EXPORT  const  gp_Pnt& PChar()  const;




protected:

  
  //! Initialize the values of inner tolerances.
  Standard_EXPORT   void InitTolerances() ;


  Standard_Boolean done;
  Standard_Integer nbint;
  IntAna_ResultType typeres;
  gp_Pnt pt1;
  gp_Pnt pt2;
  gp_Pnt pt3;
  gp_Pnt pt4;
  gp_Dir dir1;
  gp_Dir dir2;
  gp_Dir dir3;
  gp_Dir dir4;
  Standard_Real param1;
  Standard_Real param2;
  Standard_Real param3;
  Standard_Real param4;
  Standard_Real param1bis;
  Standard_Real param2bis;
  Standard_Real myEPSILON_DISTANCE;
  Standard_Real myEPSILON_ANGLE_CONE;
  Standard_Real myEPSILON_MINI_CIRCLE_RADIUS;
  Standard_Real myEPSILON_CYLINDER_DELTA_RADIUS;
  Standard_Real myEPSILON_CYLINDER_DELTA_DISTANCE;
  Standard_Real myEPSILON_AXES_PARA;
  Standard_Boolean myCommonGen;
  gp_Pnt myPChar;


private:





};


#include <IntAna_QuadQuadGeo.lxx>





#endif // _IntAna_QuadQuadGeo_HeaderFile