60b70808be190e4d3102cacd88121ed7d0bba0f5
[occt.git] / src / GccGeo / GccGeo_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 GccGeo (
18     TheCurve         as any; --
19     TheTool          as any; --
20     TheQCurve        as any; -- as QualifiedCurve from GccEnt
21                              --                  (TheCurve)
22     TheParGenCurve   as any; -- as ParGenCurve from GccGeo 
23                              --               (TheCurve)
24     TheHParGenCurve  as Transient;
25     TheCurvePGTool   as any; -- as CurvePGTool from GccGeo 
26                              --               (Thecurve,
27                              --                TheTool,
28                              --                TheParGenCurve)
29     TheIntConicCurve as any) -- as TheIntConicCurveOfGOffsetInter from IntCurve
30                              --                            (TheParGenCurve,
31                              --                             TheCurvePGTool)
32
33
34         ---Purpose: This class implements the algorithms used to 
35         --          create 2d circles TANgent to 2 entities and 
36         --          having the center ON a curve.
37         --          The order of the tangency argument is always
38         --          QualifiedCirc, QualifiedLin, QualifiedCurv, Pnt2d. 
39         --          the arguments are :
40         --            - The two tangency arguments (lines, circles or points).
41         --            - The center line (a curve).
42         --            - The parameter for each tangency argument which 
43         --            is a curve.
44         --            - The tolerance.
45
46 -- inherits Entity from Standard
47
48 uses Pnt2d            from gp,
49      Lin2d            from gp,
50      Circ2d           from gp,  
51      QualifiedCirc    from GccEnt,
52      QualifiedLin     from GccEnt,
53      Array1OfCirc2d   from TColgp,
54      Array1OfPnt2d    from TColgp,
55      Array1OfInteger  from TColStd,
56      Array1OfReal     from TColStd,
57      Position         from GccEnt,
58      Array1OfPosition from GccEnt
59      
60 raises NotDone      from StdFail,
61        BadQualifier from GccEnt,
62        OutOfRange   from Standard
63
64 is
65
66 Create(Qualified1 :        QualifiedCirc from GccEnt  ;
67        Qualified2 :        QualifiedCirc from GccEnt  ;
68        OnCurv     :        TheCurve                   ;
69        Tolerance  :        Real          from Standard) returns Circ2d2TanOn
70     ---Purpose: This method implements the algorithms used to 
71     --          create 2d circles TANgent to two 2d circles and 
72     --          having the center ON a curve.
73 raises BadQualifier from GccEnt;
74
75 Create(Qualified1 :        QualifiedCirc from GccEnt  ;
76        Qualified2 :        QualifiedLin  from GccEnt  ;
77        OnCurv     :        TheCurve                   ;
78        Tolerance  :        Real          from Standard) returns Circ2d2TanOn
79     ---Purpose: This method implements the algorithms used to 
80     --          create 2d circles TANgent to a 2d circle and a 2d line
81     --          having the center ON a curve.
82 raises BadQualifier from GccEnt;
83
84 Create(Qualified1 :        QualifiedCirc from GccEnt  ;
85        Point2     :        Pnt2d         from gp      ;
86        OnCurv     :        TheCurve                   ;
87        Tolerance  :        Real          from Standard) returns Circ2d2TanOn
88     ---Purpose: This method implements the algorithms used to 
89     --          create 2d circles TANgent to a 2d circle and a point
90     --          having the center ON a curve.
91 raises BadQualifier from GccEnt;
92
93 Create(Qualified1 :        QualifiedLin  from GccEnt  ;
94        Qualified2 :        QualifiedLin  from GccEnt  ;
95        OnCurv     :        TheCurve                   ;
96        Tolerance  :        Real          from Standard) returns Circ2d2TanOn
97     ---Purpose: This method implements the algorithms used to 
98     --          create 2d circles TANgent to two 2d lines
99     --          having the center ON a curve.
100 raises BadQualifier from GccEnt;
101
102 Create(Qualified1 :        QualifiedLin  from GccEnt  ;
103        Qualified2 :        Pnt2d         from gp      ;
104        OnCurv     :        TheCurve                   ;
105        Tolerance  :        Real          from Standard) returns Circ2d2TanOn
106     ---Purpose: This method implements the algorithms used to 
107     --          create 2d circles TANgent to a 2d line and a point
108     --          having the center ON a 2d line.
109 raises BadQualifier from GccEnt;
110
111 Create(Point1     :        Pnt2d         from gp      ;
112        Point2     :        Pnt2d         from gp      ;
113        OnCurv     :        TheCurve                   ;
114        Tolerance  :        Real          from Standard) returns Circ2d2TanOn ;
115     ---Purpose: This method implements the algorithms used to 
116     --          create 2d circles TANgent to two points
117     --          having the center ON a 2d line.
118
119 -- ....................................................................
120
121 IsDone(me) returns Boolean from Standard
122 is static;
123     ---Purpose: This method returns True if the construction 
124     --          algorithm succeeded.
125
126 NbSolutions(me) returns Integer from Standard
127     ---Purpose: This method returns the number of solutions.
128 raises NotDone
129 is static;
130     ---Purpose: It raises NotDone if the construction algorithm 
131     --          didn't succeed.
132
133 ThisSolution(me ; Index : Integer) returns Circ2d from gp 
134     ---Purpose: Returns the solution number Index and raises OutOfRange 
135     --          exception if Index is greater than the number of solutions.
136     --          Be careful: the Index is only a way to get all the 
137     --          solutions, but is not associated to those outside the 
138     --          context of the algorithm-object.
139 raises OutOfRange, NotDone
140 is static;
141     ---Purpose: It raises NotDone if the construction algorithm 
142     --          didn't succeed.
143     --          It raises OutOfRange if Index is greater than the 
144     --          number of solutions.
145
146 WhichQualifier(me                                  ;
147                Index   :     Integer  from Standard;
148                Qualif1 : out Position from GccEnt  ;
149                Qualif2 : out Position from GccEnt  )
150 raises OutOfRange, NotDone
151 is static;
152     ---Purpose: It returns the informations about the qualifiers of 
153     --          the tangency 
154     --          arguments concerning the solution number Index.
155     --          It returns the real qualifiers (the qualifiers given to the 
156     --          constructor method in case of enclosed, enclosing and outside 
157     --          and the qualifiers computedin case of unqualified).
158
159 Tangency1(me                                     ;
160           Index         : Integer   from Standard;
161           ParSol,ParArg : out Real  from Standard;
162           PntSol        : out Pnt2d from gp      )
163     ---Purpose: Returns informations about the tangency point between the 
164     --          result number Index and the first argument.
165     --          ParSol is the intrinsic parameter of the point on the 
166     --          solution curv.
167     --          ParArg is the intrinsic parameter of the point on the 
168     --          argument curv.
169     --          PntSol is the tangency point on the solution curv.
170     --          PntArg is the tangency point on the argument curv.
171 raises OutOfRange, NotDone
172 is static;
173     ---Purpose: It raises NotDone if the construction algorithm 
174     --          didn't succeed.
175     --          It raises OutOfRange if Index is greater than the 
176     --          number of solutions.
177
178 Tangency2(me                                     ;
179           Index         : Integer   from Standard;
180           ParSol,ParArg : out Real  from Standard;
181           PntSol        : out Pnt2d from gp      )
182     ---Purpose: Returns informations about the tangency point between the 
183     --          result number Index and the second argument.
184     --          ParSol is the intrinsic parameter of the point on the 
185     --          solution curv.
186     --          ParArg is the intrinsic parameter of the point on the 
187     --          argument curv.
188     --          PntSol is the tangency point on the solution curv.
189     --          PntArg is the tangency point on the argument curv.
190 raises OutOfRange, NotDone
191 is static;
192     ---Purpose: It raises NotDone if the construction algorithm 
193     --          didn't succeed.
194     --          It raises OutOfRange if Index is greater than the 
195     --          number of solutions.
196
197 CenterOn3 (me                                     ;
198            Index         : Integer   from Standard;
199            ParArg        : out Real  from Standard;
200            PntSol        : out Pnt2d from gp      )
201     ---Purpose: Returns informations about the center (on the curv) 
202     --          of the result.
203     --          ParArg is the intrinsic parameter of the point on 
204     --          the argument curv.
205     --          PntSol is the center point of the solution curv.
206 raises OutOfRange, NotDone
207 is static;
208     ---Purpose: It raises NotDone if the construction algorithm 
209     --          didn't succeed.
210     --          It raises OutOfRange if Index is greater than the 
211     --          number of solutions.
212
213 IsTheSame1(me                           ;
214            Index : Integer from Standard) returns Boolean from Standard
215     ---Purpose: Returns True if the solution number Index is equal to 
216     --          the first argument and False in the other cases.
217 raises OutOfRange, NotDone
218 is static;
219     ---Purpose: It raises NotDone if the construction algorithm 
220     --          didn't succeed.
221     --          It raises OutOfRange if Index is greater than the 
222     --          number of solutions.
223
224 IsTheSame2(me                           ;
225            Index : Integer from Standard) returns Boolean from Standard
226     ---Purpose: Returns True if the solution number Index is equal to 
227     --          the second argument and False in the other cases.
228 raises OutOfRange, NotDone
229 is static;
230     ---Purpose: It raises NotDone if the construction algorithm 
231     --          didn't succeed.
232     --          It raises OutOfRange if Index is greater than the 
233     --          number of solutions.
234
235 fields
236
237     WellDone : Boolean from Standard;
238     ---Purpose: True if the algorithm succeeded.
239
240     NbrSol   : Integer from Standard;
241     ---Purpose: Number of solutions.
242
243     cirsol   : Array1OfCirc2d from TColgp;
244     ---Purpose: The solutions.
245
246     qualifier1 : Array1OfPosition from GccEnt;
247     ---Purpose: The qualifiers of the first argument.
248
249     qualifier2 : Array1OfPosition from GccEnt;
250     ---Purpose: The qualifiers of the second argument.
251
252     TheSame1 : Array1OfInteger from TColStd;
253     ---Purpose: 1 if the solution and the first argument are the same 
254     --          (2 circles).
255     --          If R1 is the radius of the first argument and Rsol the radius 
256     --          of the solution and dist the distance between the two centers,
257     --          we consider the two circles are identical if R1+dist-Rsol is 
258     --          less than Tolerance.
259     --          0 in the other cases.
260
261     TheSame2 : Array1OfInteger from TColStd;
262     ---Purpose: 1 if the solution and the second argument are the same 
263     --          (2 circles).
264     --          If R2 is the radius of the second argument and Rsol the radius 
265     --          of the solution and dist the distance between the two centers,
266     --          we consider the two circles are identical if R2+dist-Rsol is 
267     --          less than Tolerance.
268     --          0 in the other cases.
269
270     pnttg1sol   : Array1OfPnt2d from TColgp;
271     ---Purpose: The tangency point between the solution and the first 
272     --          argument on the solution.
273
274     pnttg2sol   : Array1OfPnt2d from TColgp;
275     ---Purpose: The tangency point between the solution and the second 
276     --          argument on the solution.
277
278     pntcen   : Array1OfPnt2d from TColgp;
279     ---Purpose: The center point of the solution on the third argument.
280
281     par1sol   : Array1OfReal from TColStd;
282     ---Purpose: The parameter of the tangency point between the solution 
283     --          and the first argument on the solution.
284
285     par2sol   : Array1OfReal from TColStd;
286     ---Purpose: The parameter of the tangency point between the solution 
287     --          and the second argument on the solution.
288
289     pararg1   : Array1OfReal from TColStd;
290     ---Purpose: The parameter of the tangency point between the solution 
291     --          and the first argument on the first argument.
292
293     pararg2   : Array1OfReal from TColStd;
294     ---Purpose: The parameter of the tangency point between the solution 
295     --          and the second argument on the second argument.
296
297     parcen3   : Array1OfReal from TColStd;
298     ---Purpose: The parameter of the center point of the solution on the 
299     --          second argument.
300
301 end Circ2d2TanOn;