79b5c237c1d2b32e16ccbc3e3ec4baea8db305bd
[occt.git] / src / GccIter / GccIter_Circ2d3Tan.cdl
1 -- Created on: 1991-03-29
2 -- Created by: Remi 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 under
9 -- the terms of the GNU Lesser General Public License 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 generic class Circ2d3Tan from GccIter (
18     TheCurve          as any;
19     TheCurveTool      as any; -- as CurveTool from GccInt (TheCurve)
20     TheQualifiedCurve as any) -- as QualifiedCurve from GccEnt
21                               --                  (TheCurve)
22
23         ---Purpose: This class implements the algorithms used to 
24         --          create 2d circles tangent to 3 points/lines/circles/
25         --          curves with one curve or more.
26         --          The arguments of all construction methods are :
27         --             - The three qualifiied elements for the 
28         --             tangency constrains (QualifiedCirc, QualifiedLine,
29         --             Qualifiedcurv, Points).
30         --             - A parameter for each QualifiedCurv.
31
32 -- inherits Entity from Standard
33
34 uses Pnt2d            from gp,
35      Lin2d            from gp, 
36      Circ2d           from gp,
37      QualifiedCirc    from GccEnt,
38      QualifiedLin     from GccEnt,
39      Position         from GccEnt
40
41 raises NotDone    from StdFail
42
43 private class FuncTCuCuCu instantiates FunctionTanCuCuCu from GccIter (
44                                             TheCurve,TheCurveTool);
45 is
46
47 Create(Qualified1 : QualifiedCirc from GccEnt ;
48        Qualified2 : QualifiedCirc from GccEnt ;
49        Qualified3 : TheQualifiedCurve            ;
50        Param1     : Real                         ;
51        Param2     : Real                         ;
52        Param3     : Real                         ;
53        Tolerance  : Real                         ) 
54 returns Circ2d3Tan from GccIter;
55         ---Purpose: This method implements the algorithms used to 
56         --          create 2d circles tangent to 2 circles and a curve.
57
58 Create(Qualified1 : QualifiedCirc from GccEnt ;
59        Qualified2 : TheQualifiedCurve            ;
60        Qualified3 : TheQualifiedCurve            ;
61        Param1     : Real                         ;
62        Param2     : Real                         ;
63        Param3     : Real                         ;
64        Tolerance  : Real                         )
65 returns Circ2d3Tan from GccIter;
66         ---Purpose: This method implements the algorithms used to 
67         --          create 2d circles tangent to a circle and 2 curves.
68
69 Create(Qualified1 : QualifiedCirc from GccEnt ;
70        Qualified2 : QualifiedLin  from GccEnt ;
71        Qualified3 : TheQualifiedCurve            ;
72        Param1     : Real                         ;
73        Param2     : Real                         ;
74        Param3     : Real                         ;
75        Tolerance  : Real                         ) 
76 returns Circ2d3Tan from GccIter;
77         ---Purpose: This method implements the algorithms used to 
78         --          create 2d circles tangent to a circle and a line and
79         --          a curve.
80
81 Create(Qualified1 : QualifiedCirc     from GccEnt ;
82        Qualified2 : TheQualifiedCurve                ;
83        Point3     : Pnt2d                            ;
84        Param1     : Real                             ;
85        Param2     : Real                             ;
86        Tolerance  : Real                             ) 
87 returns Circ2d3Tan from GccIter;
88         ---Purpose: This method implements the algorithms used to 
89         --          create 2d circles tangent to a circle and a point and
90         --          a curve.
91
92 Create(Qualified1 : QualifiedLin      from GccEnt ;
93        Qualified2 : QualifiedLin      from GccEnt ;
94        Qualified3 : TheQualifiedCurve                ;
95        Param1     : Real                             ;
96        Param2     : Real                             ;
97        Param3     : Real                             ;
98        Tolerance  : Real                             ) 
99 returns Circ2d3Tan from GccIter;
100         ---Purpose: This method implements the algorithms used to 
101         --          create 2d circles tangent to 2 lines and a curve.
102
103 Create(Qualified1 : QualifiedLin      from GccEnt ;
104        Qualified2 : TheQualifiedCurve                ;
105        Qualified3 : TheQualifiedCurve                ;
106        Param1     : Real                             ;
107        Param2     : Real                             ;
108        Param3     : Real                             ;
109        Tolerance  : Real                             ) 
110 returns Circ2d3Tan from GccIter;
111         ---Purpose: This method implements the algorithms used to 
112         --          create 2d circles tangent to a line and 2 curves.
113
114 Create(Qualified1 : QualifiedLin      from GccEnt ;
115        Qualified2 : TheQualifiedCurve                ;
116        Point3     : Pnt2d                            ;
117        Param1     : Real                             ;
118        Param2     : Real                             ;
119        Tolerance  : Real                             ) 
120 returns Circ2d3Tan from GccIter;
121         ---Purpose: This method implements the algorithms used to 
122         --          create 2d circles tangent to a line and a curve 
123         --          and a point.
124
125 Create(Qualified1 : TheQualifiedCurve ;
126        Point1     : Pnt2d             ;
127        Point2     : Pnt2d             ;
128        Param1     : Real              ;
129        Tolerance  : Real              ) 
130 returns Circ2d3Tan from GccIter;
131         ---Purpose: This method implements the algorithms used to 
132         --          create 2d circles tangent to a curve and 2 points.
133
134 Create(Qualified1 : TheQualifiedCurve ;
135        Qualified2 : TheQualifiedCurve ;
136        Point2     : Pnt2d             ;
137        Param1     : Real              ;
138        Param2     : Real              ;
139        Tolerance  : Real              ) 
140 returns Circ2d3Tan from GccIter;
141         ---Purpose: This method implements the algorithms used to 
142         --          create 2d circles tangent to 2 curves and a point.
143
144 Create(Qualified1 : TheQualifiedCurve ;
145        Qualified2 : TheQualifiedCurve ;
146        Qualified3 : TheQualifiedCurve ;
147        Param1     : Real              ;
148        Param2     : Real              ;
149        Param3     : Real              ;
150        Tolerance  : Real              ) 
151 returns Circ2d3Tan from GccIter;
152         ---Purpose: This method implements the algorithms used to 
153         --          create 2d circles tangent to 3 curves.
154
155 -- -- ....................................................................
156
157 IsDone(me) returns Boolean
158 is static;
159     ---Purpose: This method returns True if the construction 
160     --          algorithm succeeded.
161
162 ThisSolution(me) returns Circ2d 
163     ---Purpose: Returns the solution.
164 raises NotDone from StdFail
165 is static;
166     ---Purpose: It raises NotDone if the construction algorithm 
167     --          didn't succeed.
168
169 WhichQualifier(me                                 ; 
170                Qualif1  : out Position from GccEnt;
171                Qualif2  : out Position from GccEnt;
172                Qualif3  : out Position from GccEnt)
173 raises NotDone from StdFail
174 is static;
175     -- It returns the informations about the qualifiers of the tangency 
176     -- arguments concerning the solution number Index.
177     -- It returns the real qualifiers (the qualifiers given to the 
178     -- constructor method in case of enclosed, enclosing and outside 
179     -- and the qualifiers computedin case of unqualified).
180
181 Tangency1(me                       ;
182           ParSol,ParArg : out Real ;
183           PntSol        : out Pnt2d)
184     ---Purpose: Returns informations about the tangency point between 
185     --          the result and the first argument.
186     --          ParSol is the intrinsic parameter of the point PntSol 
187     --          on the solution curv.
188     --          ParArg is the intrinsic parameter of the point PntSol 
189     --          on the argument curv.
190 raises NotDone from StdFail
191 is static;
192     ---Purpose: It raises NotDone if the construction algorithm 
193     --          didn't succeed.
194
195 Tangency2(me                       ;
196           ParSol,ParArg : out Real ;
197           PntSol        : out Pnt2d)
198     ---Purpose: Returns informations about the tangency point between 
199     --          the result and the second argument.
200     --          ParSol is the intrinsic parameter of the point PntSol 
201     --          on the solution curv.
202     --          ParArg is the intrinsic parameter of the point PntSol 
203     --          on the argument curv.
204 raises NotDone from StdFail
205 is static;
206     ---Purpose: It raises NotDone if the construction algorithm 
207     --          didn't succeed.
208
209 Tangency3(me                       ;
210           ParSol,ParArg : out Real ;
211           PntSol        : out Pnt2d)
212     ---Purpose: Returns informations about the tangency point between 
213     --          the result and the third argument.
214     --          ParSol is the intrinsic parameter of the point PntSol 
215     --          on the solution curv.
216     --          ParArg is the intrinsic parameter of the point PntSol 
217     --          on the argument curv.
218 raises NotDone from StdFail
219 is static;
220     ---Purpose: It raises NotDone if the construction algorithm 
221     --          didn't succeed.
222
223 IsTheSame1(me) returns Boolean
224     -- Returns True if the solution is equal to the first argument.
225 raises NotDone from StdFail
226 is static;
227     ---Purpose: It raises NotDone if the construction algorithm 
228     --          didn't succeed.
229
230 IsTheSame2(me) returns Boolean
231     -- Returns True if the solution is equal to the second argument.
232 raises NotDone from StdFail
233 is static;
234     ---Purpose: It raises NotDone if the construction algorithm 
235     --          didn't succeed.
236
237 IsTheSame3(me) returns Boolean
238     -- Returns True if the solution is equal to the third argument.
239 raises NotDone from StdFail
240 is static;
241     ---Purpose: It raises NotDone if the construction algorithm 
242     --          didn't succeed.
243
244 fields
245
246     WellDone : Boolean;
247     ---Purpose: True if the algorithm succeeded.
248
249     cirsol   : Circ2d;
250     ---Purpose: The solutions.
251
252     qualifier1 : Position from GccEnt;
253     -- The qualifiers of the first argument.
254
255     qualifier2 : Position from GccEnt;
256     -- The qualifiers of the first argument.
257
258     qualifier3 : Position from GccEnt;
259     -- The qualifiers of the first argument.
260
261     TheSame1 : Boolean;
262     ---Purpose: True if the solution and the first argument are identical.
263     --          Two circles are identical if the difference between the 
264     --          radius of one and the sum of the radius of the other and 
265     --          the distance between the centers is less than Tolerance. 
266     --          False in the other cases.
267
268     TheSame2 : Boolean;
269     ---Purpose: True if the solution and the second argument are identical.
270     --          Two circles are identical if the difference between the 
271     --          radius of one and the sum of the radius of the other and 
272     --          the distance between the centers is less than Tolerance. 
273     --          False in the other cases.
274
275     TheSame3 : Boolean;
276     ---Purpose: True if the solution and the third argument are identical.
277     --          Two circles are identical if the difference between the 
278     --          radius of one and the sum of the radius of the other and 
279     --          the distance between the centers is less than Tolerance. 
280     --          False in the other cases.
281
282     pnttg1sol   : Pnt2d;
283     ---Purpose: The tangency point between the solution and the first 
284     --          argument on the solution.
285
286     pnttg2sol   : Pnt2d;
287     ---Purpose: The tangency point between the solution and the second 
288     --          argument on the solution.
289
290     pnttg3sol   : Pnt2d;
291     ---Purpose: The tangency point between the solution and the third 
292     --          argument on the solution.
293
294     par1sol   : Real;
295     ---Purpose: The parameter of the tangency point between the solution 
296     --          and the first argument on the solution.
297
298     par2sol   : Real;
299     ---Purpose: The parameter of the tangency point between the solution 
300     --          and the second argument on the solution.
301
302     par3sol   : Real;
303     ---Purpose: The parameter of the tangency point between the solution 
304     --          and the third argument on the solution.
305
306     pararg1   : Real;
307     ---Purpose: The parameter of the tangency point between the solution 
308     --          and the first argument on the first argument.
309
310     pararg2   : Real;
311     ---Purpose: The parameter of the tangency point between the solution 
312     --          and the second argument on the second argument.
313
314     pararg3   : Real;
315     ---Purpose: The parameter of the tangency point between the solution 
316     --          and the third argument on the second argument.
317
318 end Circ2d3Tan;