0023985: There is no section between attached faces.
[occt.git] / src / IntAna / IntAna_IntConicQuad.cdl
1 -- Created on: 1992-08-06
2 -- Created by: Laurent BUCHARD
3 -- Copyright (c) 1992-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23 class IntConicQuad from IntAna 
24
25         ---Purpose: This class provides the analytic intersection between
26         --          a conic defined as an element of gp (Lin,Circ,Elips,
27         --          Parab,Hypr) and a quadric as defined in the class
28         --          Quadric from IntAna.
29         --          The intersection between a conic and a plane is treated
30         --          as a special case.
31         --          
32         --          The result of the intersection are points (Pnt from
33         --          gp), associated with the parameter on the conic.
34         --          
35         --          A call to an Intersection  L:Lin from gp and 
36         --          SPH: Sphere from gp can be written either : 
37         --               IntAna_IntConicQuad Inter(L,IntAna_Quadric(SPH))
38         --           or :
39         --               IntAna_IntConicQuad Inter(L,SPH) (it is necessary
40         --                  to include IntAna_Quadric.hxx in this case)
41
42
43
44 uses Pnt     from gp,
45      Lin     from gp,
46      Circ    from gp,
47      Elips   from gp,
48      Parab   from gp,
49      Hypr    from gp,
50      Pln     from gp,
51      Quadric from IntAna
52      
53      
54
55 raises NotDone     from StdFail,
56        OutOfRange  from Standard,
57        DomainError from Standard
58
59 is
60
61
62     Create
63     
64         ---Purpose: Empty constructor.
65         --          
66     
67         returns IntConicQuad from IntAna;
68
69
70
71     Create(L: Lin from gp; Q: Quadric from IntAna)
72     
73         ---Purpose: Creates the intersection between a line and a quadric.
74
75         returns IntConicQuad from IntAna;
76
77
78     Perform(me:in out; L: Lin from gp; Q: Quadric from IntAna)
79     
80         ---Purpose: Intersects a line and a quadric.
81
82         is static;
83
84
85     Create(C: Circ from gp; Q: Quadric from IntAna)
86     
87         ---Purpose: Creates the intersection between a circle and a quadric.
88
89         returns IntConicQuad from IntAna;
90
91
92     Perform(me: in out; C: Circ from gp; Q: Quadric from IntAna)
93     
94         ---Purpose: Intersects a circle and a quadric.
95
96         is static;
97
98
99     Create(E: Elips from gp; Q: Quadric from IntAna)
100     
101         ---Purpose: Creates the intersection between an ellipse and a quadric.
102
103         returns IntConicQuad from IntAna;
104
105
106     Perform(me:in out; E: Elips from gp; Q: Quadric from IntAna)
107     
108         ---Purpose: Intersects an ellipse and a quadric.
109
110         is static;
111
112
113     Create(P: Parab from gp; Q: Quadric from IntAna)
114     
115         ---Purpose: Creates the intersection between a parabola and a quadric.
116
117         returns IntConicQuad from IntAna;
118
119
120     Perform(me:in out; P: Parab from gp; Q: Quadric from IntAna)
121     
122         ---Purpose: Intersects a parabola and a quadric.
123
124         is static;
125
126
127     Create(H: Hypr from gp; Q: Quadric from IntAna)
128     
129         ---Purpose: Creates the intersection between an hyperbola and
130         --          a quadric.
131
132         returns IntConicQuad from IntAna;
133
134
135     Perform(me:in out; H: Hypr from gp; Q: Quadric from IntAna)
136     
137         ---Purpose: Intersects an hyperbola and a quadric.
138
139         is static;
140
141 ----------------------------------------------------------------------
142 --  Intersection between a Conic from gp and a Pln from IntAna
143 --  The intersection is computed with Tolerances.
144 ----------------------------------------------------------------------
145
146     Create(L : Lin from gp; P: Pln from gp; 
147            Tolang: Real from Standard;  
148            Tol : Real from Standard = 0;
149            Len : Real from Standard = 0)
150     
151         ---Purpose: Intersection between a line and a plane.
152         --          Tolang is used to determine if the angle between two
153         --          vectors is null. 
154         --          Tol is used to check the distance between line and plane 
155         --          on the distance <Len> from the origin of the line.
156     
157     returns IntConicQuad from IntAna;
158
159
160     Perform(me: in out;
161             L : Lin from gp; P: Pln from gp; Tolang: Real from Standard;  
162             Tol : Real from Standard = 0;
163             Len : Real from Standard = 0)
164   
165         ---Purpose: Intersects a line and a plane.
166         --          Tolang is used to determine if the angle between two
167         --          vectors is null.
168         --          Tol is used to check the distance between line and plane 
169         --          on the distance <Len> from the origin of the line.
170     
171     is static;
172         
173
174     Create(C : Circ from gp; P: Pln from gp; 
175            Tolang,Tol: Real from Standard)
176     
177         ---Purpose: Intersection between a circle and a plane.
178         --          Tolang is used to determine if the angle between two
179         --          vectors is null.
180         --          Tol is used to determine if a distance is null.
181     
182         returns IntConicQuad from IntAna;
183
184
185     Perform(me: in out;
186             C : Circ from gp; P: Pln from gp; Tolang,Tol: Real from Standard)
187     
188         ---Purpose: Intersects a circle and a plane.
189         --          Tolang is used to determine if the angle between two
190         --          vectors is null.
191         --          Tol is used to determine if a distance is null.
192     
193         is static;
194
195
196     Create(E : Elips from gp; P: Pln from gp; 
197            Tolang,Tol: Real from Standard)
198     
199         ---Purpose: Intersection between an ellipse and a plane.
200         --          Tolang is used to determine if the angle between two
201         --          vectors is null.
202         --          Tol is used to determine if a distance is null.
203     
204         returns IntConicQuad from IntAna;
205
206
207     Perform(me: in out;
208             E : Elips from gp; P: Pln from gp; Tolang,Tol: Real from Standard)
209     
210         ---Purpose: Intersects an ellipse and a plane.
211         --          Tolang is used to determine if the angle between two
212         --          vectors is null.
213         --          Tol is used to determine if a distance is null.
214     
215         is static;
216
217
218     Create(Pb: Parab from gp; P: Pln from gp; 
219            Tolang: Real from Standard)
220     
221         ---Purpose: Intersection between a parabola and a plane.
222         --          Tolang is used to determine if the angle between two
223         --          vectors is null.
224     
225         returns IntConicQuad from IntAna;
226
227
228     Perform(me: in out;
229             Pb: Parab from gp; P: Pln from gp; Tolang: Real from Standard)
230     
231         ---Purpose: Intersects a parabola and a plane.
232         --          Tolang is used to determine if the angle between two
233         --          vectors is null.
234     
235         is static;
236
237
238     Create(H : Hypr from gp; P: Pln from gp; 
239            Tolang: Real from Standard)
240     
241         ---Purpose: Intersection between an hyperbola and a plane.
242         --          Tolang is used to determine if the angle between two
243         --          vectors is null.
244     
245         returns IntConicQuad from IntAna;
246
247
248     Perform(me: in out;
249             H : Hypr from gp; P: Pln from gp; Tolang: Real from Standard)
250     
251         ---Purpose: Intersects an hyperbola and a plane.
252         --          Tolang is used to determine if the angle between two
253         --          vectors is null.
254     
255         is static;
256
257
258     IsDone(me)
259     
260         ---Purpose: Returns TRUE if the creation completed.
261         --          
262         ---C++: inline
263
264         returns Boolean from Standard
265         is static;
266
267
268     IsInQuadric(me)
269     
270         ---Purpose: Returns TRUE if the conic is in the quadric.
271         --          
272         ---C++: inline
273
274         returns Boolean from Standard
275
276         raises NotDone from StdFail
277         --     The exception NotDone is raised if IsDone returns False.
278         
279         is static;
280
281
282     IsParallel(me)
283     
284         ---Purpose: Returns TRUE if the line is in a quadric which
285         --          is parallel to the quadric.
286         ---C++: inline
287
288         returns Boolean from Standard
289
290         raises NotDone from StdFail
291         --     The exception NotDone is raised if IsDone returns False.
292         
293         is static;
294
295
296     NbPoints(me)
297     
298         ---Purpose: Returns the number of intersection point.
299         --          
300         ---C++: inline
301
302         returns Integer from Standard
303
304         raises NotDone      from StdFail, 
305                DomainError  from Standard
306         --     The exception NotDone is raised if IsDone returns False.
307         --     The exception DomainError is raised if IsInQuadric returns
308         --          True or IsParallel returns True.
309
310         
311         is static;
312
313
314     Point(me; N: Integer from Standard)
315     
316         ---Purpose: Returns the point of range N.
317         --          
318         ---C++: inline
319         ---C++: return const&
320
321         returns Pnt from gp
322
323         raises NotDone     from StdFail, 
324                DomainError from Standard, 
325                OutOfRange  from Standard
326         --     The exception NotDone is raised if IsDone returns False.
327         --     The exception DomainError is raised if IsInQuadric returns
328         --          True or IsParallel returns true.
329         --     The exception OutOfRange is raised if N<=0 or N>NbPoints.
330         
331         is static;
332
333
334     ParamOnConic(me; N: Integer from Standard)
335     
336         ---Purpose: Returns the parameter on the line of the intersection
337         --          point of range N.
338         --          
339         ---C++: inline
340
341         returns Real from Standard
342         
343         raises NotDone     from StdFail,
344                DomainError from Standard,
345                OutOfRange  from Standard
346         --     The exception NotDone is raised if IsDone returns False.
347         --     The exception DomainError is raised if IsInQuadric returns
348         --          True or IsParallel returns true.
349         --     The exception OutOfRange is raised if N<=0 or N>NbPoints.
350         
351         is static;
352
353
354
355 fields
356
357     done          : Boolean from Standard;
358     parallel      : Boolean from Standard;
359     inquadric     : Boolean from Standard;
360     
361     nbpts         : Integer from Standard;
362     
363     pnts          : Pnt     from gp [4];
364     paramonc      : Real    from Standard [4];
365
366 end IntConicQuad;
367
368