1d4ef506074d735f6a5a76312591db3c0589337a
[occt.git] / src / GccIter / GccIter_Circ2d2TanOn.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 Circ2d2TanOn from GccIter (
18     TheCurve          as any;
19     TheCurveTool      as any;  
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 2 entities and 
25         --          having the center ON a curv.
26         --          The order of the tangency argument is always
27         --          QualifiedCirc, QualifiedLin, QualifiedCurv, Pnt2d. 
28         --          the arguments are :
29         --            - The two tangency arguments.
30         --            - The center line.
31         --            - The parameter for each tangency argument which 
32         --            is a curve.
33         --            - The tolerance.
34
35 -- inherits Entity from Standard
36
37 uses Pnt2d            from gp,
38      Lin2d            from gp,
39      Circ2d           from gp,  
40      QualifiedCirc    from GccEnt,
41      QualifiedLin     from GccEnt,
42      Position         from GccEnt
43      
44 raises NotDone    from StdFail
45
46 private class FuncTCuCuOnCu instantiates FunctionTanCuCuOnCu from GccIter (
47                                                  TheCurve,TheCurveTool);
48 is
49
50 -- On a 2d line ..........................................................
51
52 Create(Qualified1 : QualifiedCirc     ;
53        Qualified2 : TheQualifiedCurve ;
54        OnLine     : Lin2d             ;
55        Param1     : Real              ;
56        Param2     : Real              ;
57        Param3     : Real              ;
58        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
59     ---Purpose: This method implements the algorithms used to 
60     --          create 2d circles TANgent to a 2d circle and a curve and 
61     --          having the center ON a 2d line.
62     --          Param2 is the initial guess on the curve QualifiedCurv.
63     --          Tolerance is used for the limit cases.
64
65 Create(Qualified1 : QualifiedLin      ;
66        Qualified2 : TheQualifiedCurve ;
67        OnLine     : Lin2d             ;
68        Param1     : Real              ;
69        Param2     : Real              ;
70        Param3     : Real              ;
71        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
72     ---Purpose: This method implements the algorithms used to 
73     --          create 2d circles TANgent to a 2d line and a curve and 
74     --          having the center ON a 2d line.
75     --          Param2 is the initial guess on the curve QualifiedCurv.
76     --          Tolerance is used for the limit cases.
77
78 Create(Qualified1 : TheQualifiedCurve ;
79        Qualified2 : TheQualifiedCurve ;
80        OnLine     : Lin2d             ;
81        Param1     : Real              ;
82        Param2     : Real              ;
83        Param3     : Real              ;
84        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
85     ---Purpose: This method implements the algorithms used to 
86     --          create 2d circles TANgent to two curves and 
87     --          having the center ON a 2d line.
88     --          Param1 is the initial guess on the first QualifiedCurv.
89     --          Param2 is the initial guess on the first QualifiedCurv.
90     --          Tolerance is used for the limit cases.
91
92 Create(Qualified1 : TheQualifiedCurve ;
93        Point2     : Pnt2d             ;
94        OnLine     : Lin2d             ;
95        Param1     : Real              ;
96        Param2     : Real              ;
97        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
98     ---Purpose: This method implements the algorithms used to 
99     --          create 2d circles TANgent to a 2d point and a curve and 
100     --          having the center ON a 2d line.
101     --          Param2 is the initial guess on the curve QualifiedCurv.
102     --          Tolerance is used for the limit cases.
103
104
105 -- -- On a 2d Circle .....................................................
106
107 Create(Qualified1 : QualifiedCirc     ;
108        Qualified2 : TheQualifiedCurve ;
109        OnCirc     : Circ2d            ;
110        Param1     : Real              ;
111        Param2     : Real              ;
112        Param3     : Real              ;
113        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
114     ---Purpose: This method implements the algorithms used to 
115     --          create 2d circles TANgent to a 2d circle and a curve and 
116     --          having the center ON a 2d circle.
117     --          Param2 is the initial guess on the curve QualifiedCurv.
118     --          Tolerance is used for the limit cases.
119
120 Create(Qualified1 : QualifiedLin      ;
121        Qualified2 : TheQualifiedCurve ;
122        OnCirc     : Circ2d            ;
123        Param1     : Real              ;
124        Param2     : Real              ;
125        Param3     : Real              ;
126        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
127     ---Purpose: This method implements the algorithms used to 
128     --          create 2d circles TANgent to a 2d line and a curve and 
129     --          having the center ON a 2d circle.
130     --          Param2 is the initial guess on the curve QualifiedCurv.
131     --          Tolerance is used for the limit cases.
132
133 Create(Qualified1 : TheQualifiedCurve ;
134        Qualified2 : TheQualifiedCurve ;
135        OnCirc     : Circ2d            ;
136        Param1     : Real              ;
137        Param2     : Real              ;
138        Param3     : Real              ;
139        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
140     ---Purpose: This method implements the algorithms used to 
141     --          create 2d circles TANgent to two curves and 
142     --          having the center ON a 2d circle.
143     --          Param1 is the initial guess on the first QualifiedCurv.
144     --          Param2 is the initial guess on the first QualifiedCurv.
145     --          Tolerance is used for the limit cases.
146
147 Create(Qualified1 : TheQualifiedCurve ;
148        Point2     : Pnt2d             ;
149        OnCirc     : Circ2d            ;
150        Param1     : Real              ;
151        Param2     : Real              ;
152        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
153     ---Purpose: This method implements the algorithms used to 
154     --          create 2d circles TANgent to a 2d point and a curve and 
155     --          having the center ON a 2d circle.
156     --          Param2 is the initial guess on the curve QualifiedCurv.
157     --          Tolerance is used for the limit cases.
158
159 -- -- On a curve .....................................................
160
161 Create(Qualified1 : QualifiedCirc     ;
162        Qualified2 : TheQualifiedCurve ;
163        OnCurv     : TheCurve          ;
164        Param1     : Real              ;
165        Param2     : Real              ;
166        ParamOn    : Real              ;
167        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
168     ---Purpose: This method implements the algorithms used to 
169     --          create 2d circles TANgent to a 2d circle and a curve and 
170     --          having the center ON a 2d curve.
171     --          Param2 is the initial guess on the curve QualifiedCurv.
172     --          ParamOn is the initial guess on the center curve OnCurv.
173     --          Tolerance is used for the limit cases.
174
175 Create(Qualified1 : QualifiedLin      ;
176        Qualified2 : TheQualifiedCurve ;
177        OnCurve    : TheCurve          ;
178        Param1     : Real              ;
179        Param2     : Real              ;
180        ParamOn    : Real              ;
181        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
182     ---Purpose: This method implements the algorithms used to 
183     --          create 2d circles TANgent to a 2d line and a curve and 
184     --          having the center ON a 2d curve.
185     --          Param2 is the initial guess on the curve QualifiedCurv.
186     --          ParamOn is the initial guess on the center curve OnCurv.
187     --          Tolerance is used for the limit cases.
188
189 Create(Qualified1 : TheQualifiedCurve ;
190        Point2     : Pnt2d             ;
191        OnCurve    : TheCurve          ;
192        Param1     : Real              ;
193        ParamOn    : Real              ;
194        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
195     ---Purpose: This method implements the algorithms used to 
196     --          create 2d circles TANgent to a 2d Point and a curve and 
197     --          having the center ON a 2d curve.
198     --          Param1 is the initial guess on the curve QualifiedCurv.
199     --          ParamOn is the initial guess on the center curve OnCurv.
200     --          Tolerance is used for the limit cases.
201
202 Create(Qualified1 : TheQualifiedCurve ;
203        Qualified2 : TheQualifiedCurve ;
204        OnCurve    : TheCurve          ;
205        Param1     : Real              ;
206        Param2     : Real              ;
207        ParamOn    : Real              ;
208        Tolerance  : Real              ) returns Circ2d2TanOn from GccIter ;
209     ---Purpose: This method implements the algorithms used to 
210     --          create 2d circles TANgent to two curves and 
211     --          having the center ON a 2d curve.
212     --          Param1 is the initial guess on the first curve QualifiedCurv.
213     --          Param1 is the initial guess on the second curve QualifiedCurv.
214     --          ParamOn is the initial guess on the center curve OnCurv.
215     --          Tolerance is used for the limit cases.
216
217 -- -- ....................................................................
218
219 IsDone(me) returns Boolean
220 is static;
221     ---Purpose: This method returns True if the construction 
222     --          algorithm succeeded.
223
224 ThisSolution(me) returns Circ2d 
225     ---Purpose: Returns the solution.
226 raises NotDone from StdFail
227 is static;
228     ---Purpose: It raises NotDone if the construction algorithm 
229     --          didn't succeed.
230
231 WhichQualifier(me                                 ; 
232                Qualif1  : out Position from GccEnt;
233                Qualif2  : out Position from GccEnt)
234 raises NotDone from StdFail
235 is static;
236     -- It returns the informations about the qualifiers of the tangency 
237     -- arguments concerning the solution number Index.
238     -- It returns the real qualifiers (the qualifiers given to the 
239     -- constructor method in case of enclosed, enclosing and outside 
240     -- and the qualifiers computedin case of unqualified).
241
242 Tangency1(me                       ;
243           ParSol,ParArg : out Real ;
244           PntSol        : out Pnt2d)
245     ---Purpose: Returns information about the tangency point between 
246     --          the result and the first argument.
247     --          ParSol is the intrinsic parameter of the point PntSol 
248     --          on the solution curv.
249     --          ParArg is the intrinsic parameter of the point PntSol 
250     --          on the argument curv.
251 raises NotDone from StdFail
252 is static;
253     ---Purpose: It raises NotDone if the construction algorithm 
254     --          didn't succeed.
255
256 Tangency2(me                       ;
257           ParSol,ParArg : out Real ;
258           PntSol        : out Pnt2d)
259     ---Purpose: Returns information about the tangency point between 
260     --          the result and the second argument.
261     --          ParSol is the intrinsic parameter of the point PntSol 
262     --          on the solution curv.
263     --          ParArg is the intrinsic parameter of the point PntSol 
264     --          on the argument curv.
265 raises NotDone from StdFail
266 is static;
267     ---Purpose: It raises NotDone if the construction algorithm 
268     --          didn't succeed.
269
270 CenterOn3 (me                       ;
271            ParArg        : out Real ;
272            PntSol        : out Pnt2d)
273     ---Purpose: Returns information about the center (on the curv) of the
274     --          result and the third argument.
275 raises NotDone from StdFail
276 is static;
277     ---Purpose: It raises NotDone if the construction algorithm 
278     --          didn't succeed.
279
280 IsTheSame1(me) returns Boolean
281     -- Returns True if the solution is equal to the first argument.
282 raises NotDone from StdFail
283 is static;
284     ---Purpose: It raises NotDone if the construction algorithm 
285     --          didn't succeed.
286
287 IsTheSame2(me) returns Boolean
288     -- Returns True if the solution is equal to the second argument.
289 raises NotDone from StdFail
290 is static;
291     ---Purpose: It raises NotDone if the construction algorithm 
292     --          didn't succeed.
293
294 fields
295
296     WellDone : Boolean;
297     ---Purpose: True if the algorithm succeeded.
298
299     cirsol   : Circ2d from gp;
300     -- The solutions.
301
302     qualifier1 : Position from GccEnt;
303     -- The qualifiers of the first argument.
304
305     qualifier2 : Position from GccEnt;
306     -- The qualifiers of the first argument.
307
308     TheSame1 : Boolean;
309     ---Purpose: True if the solution and the first argument are the 
310     --          same in the tolerance of Tolerance.
311     --          False in the other cases.
312
313     TheSame2 : Boolean;
314     ---Purpose: True if the solution and the second argument are the 
315     --          same in the tolerance of Tolerance.
316     --          False in the other cases.
317
318     pnttg1sol   : Pnt2d;
319     ---Purpose: The tangency point between the solution and the first 
320     --          argument on the solution.
321
322     pnttg2sol   : Pnt2d;
323     ---Purpose: The tangency point between the solution and the second 
324     --          argument on the solution.
325
326     pntcen      : Pnt2d;
327     ---Purpose: The center point of the solution on the third argument.
328
329     par1sol   : Real;
330     ---Purpose: The parameter of the tangency point between the 
331     --          solution and the first argument on the solution.
332
333     par2sol   : Real;
334     ---Purpose: The parameter of the tangency point between the 
335     --          solution and the second argument on the solution.
336
337     pararg1   : Real;
338     ---Purpose: The parameter of the tangency point between the 
339     --          solution and the first argument on the first argument.
340
341     pararg2   : Real;
342     ---Purpose: The parameter of the tangency point between the 
343     --          solution and the second argument on the second argument.
344
345     parcen3   : Real;
346     ---Purpose: The parameter of the center point of the solution 
347     --          on the second argument.
348
349 end Circ2d2TanOn;