0023535: Exception in BSplCLib::BuildCache()
[occt.git] / src / IntCurve / IntCurve_IntCurveCurveGen.cdl
1 -- Created on: 1992-05-22
2 -- Created by: Jacques GOUSSARD
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 generic class IntCurveCurveGen from IntCurve (
24     TheCurve         as any;
25     TheCurveTool     as any) -- as CurveTool from IntCurve(TheCurve)
26
27         ---Purpose: Provides the algorithm to intersect two 2D-curves.
28         --          The curves may be parametric curves or Conic (see
29         --          the template class CurveTool).
30         --
31         -- Note: The  exception  ConstructionError  is   raised  in
32         --          constructors  or in Perform  methods when a domain
33         --          (Domain from IntRes2d)  is not  correct, i-e  when
34         --          the method  TheType  returns GeomAbs_Circle     or
35         --          GeomAbs_Ellipsei   and the corresponding domain is
36         --          not  closed (use the SetEquivalentParameters for a
37         --          domain on  a circle  or an  ellipse)  or  when the
38         --          method  TheType   returns  GeomAbs_Other and   the
39         --          domain     of  the   curve   is    not     bounded
40         --          (HasFirstPoint() && HasLastPoint() return True).
41         ---Level: Advanced
42         
43 inherits Intersection from IntRes2d
44
45 uses Domain        from IntRes2d,
46      IntConicConic from IntCurve,
47      IConicTool    from IntCurve,
48      Array1OfReal  from TColStd
49  
50 raises ConstructionError from Standard
51
52                       
53         class TheProjPCur instantiates ProjPCurGen from IntCurve(
54                         TheCurve,
55                         TheCurveTool);
56                        
57         class TheIntConicCurve instantiates IntConicCurveGen from IntCurve
58                         (IConicTool      from  IntCurve,
59                          TheCurve,
60                          TheCurveTool,
61                          TheProjPCur);
62
63         class IntConicCurve instantiates UserIntConicCurveGen from IntCurve
64                         (IConicTool      from  IntCurve,
65                          TheCurve,
66                          TheCurveTool,
67                          TheIntConicCurve);
68
69         class TheIntPCurvePCurve  instantiates IntPolyPolyGen from IntCurve
70                         (TheCurve,
71                          TheCurveTool,
72                          TheProjPCur);
73 is
74
75     Create
76     
77         ---Purpose: Empty constructor.
78         returns IntCurveCurveGen from IntCurve;
79         ---C++: inline
80
81
82     Create (C:  TheCurve; TolConf,Tol: Real from Standard)
83     
84         ---Purpose: Self Intersection of a curve
85         ---C++: inline
86         returns IntCurveCurveGen from IntCurve
87         raises ConstructionError from Standard;
88
89
90     Create (C:  TheCurve; D: Domain from IntRes2d;
91             TolConf,Tol: Real from Standard)
92             
93         ---Purpose: Self Intersection of a curve with a domain.
94         ---C++: inline
95         returns IntCurveCurveGen from IntCurve
96         raises ConstructionError from Standard;
97             
98
99     Create (C1:  TheCurve; C2:  TheCurve;
100             TolConf,Tol: Real from Standard)
101
102         ---Purpose: Intersection between 2 curves.
103         ---C++: inline 
104         returns IntCurveCurveGen from IntCurve
105         raises ConstructionError from Standard;
106
107
108     Create (C1:  TheCurve; D1: Domain from IntRes2d;
109             C2:  TheCurve; 
110             TolConf,Tol: Real from Standard)
111
112         ---Purpose: Intersection between 2 curves.
113         ---C++: inline
114         returns IntCurveCurveGen from IntCurve
115         raises ConstructionError from Standard;
116         
117         
118     Create (C1:  TheCurve; 
119             C2:  TheCurve; D2: Domain from IntRes2d;
120             TolConf,Tol: Real from Standard)
121     
122         ---Purpose: Intersection between 2 curves.
123         ---C++: inline
124         returns IntCurveCurveGen from IntCurve
125         raises ConstructionError from Standard;
126
127
128
129     Create (C1:  TheCurve; D1: Domain from IntRes2d;
130             C2:  TheCurve; D2: Domain from IntRes2d;
131             TolConf,Tol: Real from Standard)
132
133         ---Purpose: Intersection between 2 curves.
134         ---C++: inline
135         returns IntCurveCurveGen from IntCurve
136         raises ConstructionError from Standard;
137
138
139
140     Perform (me: in out;
141              C1:  TheCurve; D1: Domain from IntRes2d;
142              C2:  TheCurve; D2: Domain from IntRes2d;
143              TolConf,Tol: Real from Standard)
144         ---Purpose: Intersection between 2 curves.
145
146         raises ConstructionError from Standard
147         is static;
148
149     Perform (me: in out;
150              C1:  TheCurve; 
151              C2:  TheCurve; 
152              TolConf,Tol: Real from Standard)
153         
154         ---Purpose: Intersection between 2 curves.
155         ---C++: inline
156         raises ConstructionError from Standard
157         is static;
158
159     Perform (me: in out;
160              C1:  TheCurve; D1: Domain from IntRes2d;
161              TolConf,Tol: Real from Standard)
162
163         ---Purpose: Intersection between 2 curves.
164         raises ConstructionError from Standard
165         is static;
166
167     Perform (me: in out;
168              C1:  TheCurve; 
169              TolConf,Tol: Real from Standard)
170
171         ---Purpose: Intersection between 2 curves.
172
173         raises ConstructionError from Standard
174         is static;
175
176     Perform (me: in out;
177              C1:  TheCurve; D1: Domain from IntRes2d;
178              C2:  TheCurve; 
179              TolConf,Tol: Real from Standard)
180         ---C++: inline
181         ---Purpose: Intersection between 2 curves.
182
183         raises ConstructionError from Standard
184         is static;
185
186     Perform (me: in out;
187              C1:  TheCurve; 
188              C2:  TheCurve; D2: Domain from IntRes2d;
189              TolConf,Tol: Real from Standard)
190         ---C++: inline
191         ---Purpose: Intersection between 2 curves.
192
193         raises ConstructionError from Standard
194         is static;
195
196
197     ComputeDomain(me;  C1: TheCurve; TolDomain: Real from Standard)
198     
199         ---Purpose: Create a domain from a curve
200         returns Domain from IntRes2d
201         is static;
202         
203     
204     
205     InternalPerform(me: in out;
206              C1:  TheCurve; D1: Domain from IntRes2d;
207              C2:  TheCurve; D2: Domain from IntRes2d;
208              TolConf,Tol: Real from Standard;
209              Composite: Boolean from Standard)
210
211         ---Purpose: Intersection between 2 curves.
212
213         raises ConstructionError from Standard
214         is static private;
215         
216         
217         
218     InternalCompositePerform_noRecurs(me: in out;
219             NbInterC1: Integer from Standard;
220             C1:  TheCurve;
221             NumInterC1: Integer from Standard;
222             Tab1: Array1OfReal from TColStd;
223             D1: Domain from IntRes2d;          
224             NbInterC2: Integer from Standard;
225             C2:  TheCurve;
226             NumInterC2: Integer from Standard;
227             Tab2: Array1OfReal from TColStd;
228             D2: Domain from IntRes2d;
229             TolConf,Tol: Real from Standard)
230         
231         ---Purpose: Part of InternalCompositePerform function
232      
233         raises ConstructionError from Standard
234         is static private;
235         
236   
237
238     InternalCompositePerform(me: in out;
239              C1:  TheCurve; D1: Domain from IntRes2d;
240              N1,NB1: Integer from Standard;
241              Tab1: Array1OfReal from TColStd;
242              C2:  TheCurve; D2: Domain from IntRes2d;
243              N2,NB2: Integer from Standard;
244              Tab2: Array1OfReal from TColStd;
245              TolConf,Tol: Real from Standard;
246              Composite: Boolean from Standard)
247
248         ---Purpose: Intersection between 2 curves.
249
250         raises ConstructionError from Standard
251         is static private;
252
253
254 fields
255
256     param1inf     : Real              from Standard;
257     param1sup     : Real              from Standard;
258     param2inf     : Real              from Standard;
259     param2sup     : Real              from Standard;
260     intconiconi   : IntConicConic     from IntCurve;
261     intconicurv   : TheIntConicCurve;
262     intcurvcurv   : TheIntPCurvePCurve;
263
264 end IntCurveCurveGen;
265
266
267
268
269