0024510: Remove unused local variables
[occt.git] / src / GccAna / GccAna_Circ2d2TanOn.cdl
1 -- Created on: 1991-03-22
2 -- Created by: Remy GILET
3 -- Copyright (c) 1991-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and / or modify it
9 -- under the terms of the GNU Lesser General Public version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class Circ2d2TanOn
18
19 from GccAna
20
21         ---Purpose: Describes functions for building a 2D circle
22         -- -   tangential to 2 curves, or
23         -- -   tangential to a curve and passing through a point, or
24         -- -   passing through 2 points,
25         --     and with its center on a curve. For these analytic
26         --     algorithms, curves are circles or lines.
27         --     A Circ2d2TanOn object provides a framework for:
28         -- -   defining the construction of 2D circles(s),
29         -- -   implementing the construction algorithm, and
30         -- -   consulting the result(s).
31
32 uses Pnt2d            from gp,
33      Lin2d            from gp, 
34      Circ2d           from gp, 
35      QualifiedLin     from GccEnt, 
36      QualifiedCirc    from GccEnt,
37      Array1OfReal     from TColStd,
38      Array1OfInteger  from TColStd,
39      Array1OfPnt2d    from TColgp,
40      Array1OfCirc2d   from TColgp,
41      Position         from GccEnt,
42      Array1OfPosition from GccEnt
43
44 raises OutOfRange        from Standard,
45        NotDone           from StdFail,
46        BadQualifier      from GccEnt
47
48 is
49
50 ---Category : On a 2d line ...............................................
51
52 Create(Qualified1 : QualifiedCirc ;
53        Qualified2 : QualifiedCirc ;
54        OnLine     : Lin2d         ;
55        Tolerance  : Real          ) returns Circ2d2TanOn
56         ---Purpose: This method implements the algorithms used to 
57         --          create 2d circles TANgent to two 2d circles and 
58         --          having the center ON a 2d line.
59 raises BadQualifier from GccEnt;
60
61 Create(Qualified1 : QualifiedCirc ;
62        Qualified2 : QualifiedLin  ;
63        OnLine     : Lin2d         ;
64        Tolerance  : Real          ) returns Circ2d2TanOn
65         ---Purpose: This method implements the algorithms used to 
66         --          create 2d circles TANgent to a 2d circle and a 2d line
67         --          having the center ON a 2d line.
68 raises BadQualifier from GccEnt;
69
70 Create(Qualified1 : QualifiedLin  ;
71        Qualified2 : QualifiedLin  ;
72        OnLine     : Lin2d         ;
73        Tolerance  : Real          ) returns Circ2d2TanOn
74         ---Purpose: This method implements the algorithms used to 
75         --          create 2d circles TANgent to two 2d lines
76         --          having the center ON a 2d line.
77 raises BadQualifier from GccEnt;
78
79 Create(Qualified1 : QualifiedCirc ;
80        Point2     : Pnt2d         ;
81        OnLine     : Lin2d         ;
82        Tolerance  : Real          ) returns Circ2d2TanOn
83         ---Purpose: This method implements the algorithms used to 
84         --          create 2d circles TANgent to a 2d circle and a point
85         --          having the center ON a 2d line.
86 raises BadQualifier from GccEnt;
87
88 Create(Qualified1 : QualifiedLin  ;
89        Point2     : Pnt2d         ;
90        OnLine     : Lin2d         ;
91        Tolerance  : Real          ) returns Circ2d2TanOn
92         ---Purpose: This method implements the algorithms used to 
93         --          create 2d circles TANgent to a 2d line and a point
94         --          having the center ON a 2d line.
95 raises BadQualifier from GccEnt;
96
97 Create(Point1     : Pnt2d         ;
98        Point2     : Pnt2d         ;
99        OnLine     : Lin2d         ;
100        Tolerance  : Real          ) returns Circ2d2TanOn;
101         ---Purpose: This method implements the algorithms used to 
102         --          create 2d circles TANgent to two points
103         --          having the center ON a 2d line.
104
105 ---Category: On a 2d Circle ...............................................
106
107 Create(Qualified1 : QualifiedCirc ;
108        Qualified2 : QualifiedCirc ;
109        OnCirc     : Circ2d        ;
110        Tolerance  : Real          ) returns Circ2d2TanOn
111         ---Purpose: This method implements the algorithms used to 
112         --          create 2d circles TANgent to two 2d circles and 
113         --          having the center ON a 2d circle.
114 raises BadQualifier from GccEnt;
115
116 Create(Qualified1 : QualifiedCirc ;
117        Qualified2 : QualifiedLin  ;
118        OnCirc     : Circ2d        ;
119        Tolerance  : Real          ) returns Circ2d2TanOn
120         ---Purpose: This method implements the algorithms used to 
121         --          create 2d circles TANgent to a circle and a line
122         --          having the center ON a 2d circle.
123 raises BadQualifier from GccEnt;
124
125 Create(Qualified1 : QualifiedCirc ;
126        Point2     : Pnt2d         ;
127        OnCirc     : Circ2d        ;
128        Tolerance  : Real          ) returns Circ2d2TanOn
129         ---Purpose: This method implements the algorithms used to 
130         --          create 2d circles TANgent to a circle and a point
131         --          having the center ON a 2d circle.
132 raises BadQualifier from GccEnt;
133
134 Create(Qualified1 : QualifiedLin  ;
135        Qualified2 : QualifiedLin  ;
136        OnCirc     : Circ2d        ;
137        Tolerance  : Real          ) returns Circ2d2TanOn
138         ---Purpose: This method implements the algorithms used to 
139         --          create 2d circles TANgent to two 2d lines
140         --          having the center ON a 2d circle.
141 raises BadQualifier from GccEnt;
142
143 Create(Qualified1 : QualifiedLin  ;
144        Point2     : Pnt2d         ;
145        OnCirc     : Circ2d        ;
146        Tolerance  : Real          ) returns Circ2d2TanOn
147         ---Purpose: This method implements the algorithms used to 
148         --          create 2d circles TANgent to a line and a point
149         --          having the center ON a 2d circle.
150 raises BadQualifier from GccEnt;
151
152 Create(Point1     : Pnt2d         ;
153        Point2     : Pnt2d         ;
154        OnCirc     : Circ2d        ;
155        Tolerance  : Real          ) returns Circ2d2TanOn;
156         ---Purpose: This method implements the algorithms used to create 
157         --          2d circles TANgent to two points having the center ON 
158         --          a 2d circle.
159
160 -- ....................................................................
161
162 IsDone(me) returns Boolean
163 is static;
164         ---Purpose:
165         -- Returns true if the construction algorithm does not fail
166         -- (even if it finds no solution).
167         -- Note: IsDone protects against a failure arising from a
168         -- more internal intersection algorithm, which has reached its numeric limits.
169     
170 NbSolutions(me) returns Integer
171 raises NotDone
172 is static;
173         ---Purpose:
174         -- Returns the number of circles, representing solutions
175         -- computed by this algorithm.
176         -- Exceptions
177         -- StdFail_NotDone if the construction fails.
178         
179 ThisSolution(me ; Index : Integer) returns Circ2d 
180 raises OutOfRange, NotDone
181 is static;
182         ---Purpose: Returns the solution number Index and raises OutOfRange 
183         --          exception if Index is greater than the number of solutions.
184         --          Be careful: the Index is only a way to get all the 
185         --          solutions, but is not associated to those outside the context
186         --          of the algorithm-object.
187         -- Exceptions
188         -- Standard_OutOfRange if Index is less than zero or
189         -- greater than the number of solutions computed by this algorithm.
190         -- StdFail_NotDone if the construction fails.
191         
192 WhichQualifier(me                                  ;
193                Index   :     Integer  from Standard;
194                Qualif1 : out Position from GccEnt  ;
195                Qualif2 : out Position from GccEnt  )
196 raises OutOfRange, NotDone
197 is static;
198         ---Purpose: Returns the qualifiers Qualif1 and Qualif2 of the
199         -- tangency arguments for the solution of index Index
200         -- computed by this algorithm.
201         -- The returned qualifiers are:
202         -- -   those specified at the start of construction when the
203         --   solutions are defined as enclosed, enclosing or
204         --   outside with respect to the arguments, or
205         -- -   those computed during construction (i.e. enclosed,
206         --   enclosing or outside) when the solutions are defined
207         --   as unqualified with respect to the arguments, or
208         -- -   GccEnt_noqualifier if the tangency argument is a point.
209         -- Exceptions
210         -- Standard_OutOfRange if Index is less than zero or
211         -- greater than the number of solutions computed by this algorithm.
212         -- StdFail_NotDone if the construction fails.
213
214 Tangency1(me                                     ;
215           Index         : Integer   from Standard;
216           ParSol,ParArg : out Real  from Standard;
217           PntSol        : out Pnt2d from gp      )
218         ---Purpose: Returns the informations about the tangency point between the 
219         --          result number Index and the first argument.
220         --          ParSol is the intrinsic parameter of the point PntSol on 
221         --          the solution
222         --          ParArg is the intrinsic parameter of the point PntSol on 
223         --          the first argument. Raises OutOfRange if Index is greater than the number 
224         --          of solutions and NotDone if IsDone returns false.
225 raises OutOfRange, NotDone
226 is static;
227  
228
229 Tangency2(me                                     ;
230           Index         : Integer   from Standard;
231           ParSol,ParArg : out Real  from Standard;
232           PntSol        : out Pnt2d from gp      )
233         ---Purpose: Returns the informations about the tangency point between the 
234         --          result number Index and the second argument.
235         --          ParSol is the intrinsic parameter of the point PntSol on 
236         --          the solution.
237         --          ParArg is the intrinsic parameter of the point PntSol on 
238         --          the second argument. Raises OutOfRange if Index is greater than the number 
239         --          of solutions and NotDone if IsDone returns false.
240 raises OutOfRange, NotDone
241 is static;
242   
243
244 CenterOn3 (me                                     ;
245            Index         : Integer   from Standard;
246            ParArg        : out Real  from Standard;
247            PntArg        : out Pnt2d from gp      )  
248         ---Purpose: Returns the informations about the center (on the curv) of 
249         --          the result number Index and the third argument.
250         --          ParArg is the intrinsic parameter of the point PntArg on 
251         --          the third argument.
252         --    Exceptions
253         -- Standard_OutOfRange if Index is less than zero or
254         -- greater than the number of solutions computed by this algorithm.
255         -- StdFail_NotDone if the construction fails.
256 raises OutOfRange, NotDone
257 is static;
258   
259
260 IsTheSame1(me                           ;
261            Index : Integer from Standard) returns Boolean from Standard
262         ---Purpose: True if the solution and the first argument are the same 
263         --          (2 circles).
264         --          If R1 is the radius of the first argument and Rsol the radius 
265         --          of the solution and dist the distance between the two centers,
266         --          we concider the two circles are identical if R1+dist-Rsol is 
267         --          less than Tolerance.
268         --          False in the other cases.
269         --  Raises OutOfRange if Index is greater than the number 
270         --          of solutions and NotDone if IsDone returns false.
271 raises OutOfRange, NotDone
272 is static;
273  
274 IsTheSame2(me              ;
275            Index : Integer from Standard) returns Boolean from Standard
276         ---Purpose: True if the solution and the second argument are the same 
277         --          (2 circles).
278         --          If R2 is the radius of the second argument and Rsol the radius 
279         --          of the solution and dist the distance between the two centers,
280         --          we concider the two circles are identical if R2+dist-Rsol is 
281         --          less than Tolerance.
282         --          False in the other cases.
283         -- Raises OutOfRange if Index is greater than the number 
284         --          of solutions and NotDone if IsDone returns false.
285 raises OutOfRange, NotDone
286 is static;
287    
288
289 fields
290
291     WellDone : Boolean from Standard;
292         ---Purpose: True if the algorithm succeeded.
293
294     NbrSol   : Integer from Standard;
295         ---Purpose: The number of possible solutions.
296
297     cirsol   : Array1OfCirc2d from TColgp;
298         ---Purpose: The solutions.
299
300     qualifier1 : Array1OfPosition from GccEnt;
301         ---Purpose: The qualifiers of the first argument.
302
303     qualifier2 : Array1OfPosition from GccEnt;
304         ---Purpose: The qualifiers of the second argument.
305
306     TheSame1 : Array1OfInteger from TColStd;
307         ---Purpose: 1 if the solution and the first argument are the same 
308         --          (2 circles).
309         --          If R1 is the radius of the first argument and Rsol the radius 
310         --          of the solution and dist the distance between the two centers,
311         --          we concider the two circles are identical if R1+dist-Rsol is 
312         --          less than Tolerance.
313         --          0 in the other cases.
314
315     TheSame2 : Array1OfInteger from TColStd;
316     ---Purpose: 1 if the solution and the second argument are the same 
317     --          (2 circles).
318     --          If R2 is the radius of the second argument and Rsol the radius 
319     --          of the solution and dist the distance between the two centers,
320     --          we concider the two circles are identical if R2+dist-Rsol is 
321     --          less than Tolerance.
322     --          0 in the other cases.
323
324     pnttg1sol   : Array1OfPnt2d from TColgp;
325     ---Purpose: The tangency point between the solution and the first 
326     --          argument.
327
328     pnttg2sol   : Array1OfPnt2d from TColgp;
329     ---Purpose: The tangency point between the solution and the second 
330     --          argument.
331
332     pntcen      : Array1OfPnt2d from TColgp;
333     ---Purpose: The center point of the solution.
334
335     par1sol   : Array1OfReal from TColStd;
336     ---Purpose: The parameter of pnttg1sol on the solution. 
337     --          pnttg1sol is the tangency point between the solution 
338     --          and the first argument.
339
340     par2sol   : Array1OfReal from TColStd;
341     ---Purpose: The parameter of pnttg2sol on the solution. 
342     --          pnttg2sol is the tangency point between the solution and the 
343     --          second argument.
344
345     pararg1   : Array1OfReal from TColStd;
346     ---Purpose: The parameter of pnttg1sol on the first argument. 
347     --          pnttg1sol is the tangency point between the solution and the 
348     --          first argument.
349
350     pararg2   : Array1OfReal from TColStd;
351     ---Purpose: The parameter of pnttg2sol on the second argument. 
352     --          pnttg2sol is the tangency point between the solution and the 
353     --          second argument.
354
355     parcen3   : Array1OfReal from TColStd;
356     ---Purpose: The parameter of the center point of the solution on the 
357     --          third argument.
358
359 end Circ2d2TanOn;
360