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
6 -- This file is part of Open CASCADE Technology software library.
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.
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
17 generic class Circ2d3Tan from GccIter (
19 TheCurveTool as any; -- as CurveTool from GccInt (TheCurve)
20 TheQualifiedCurve as any) -- as QualifiedCurve from GccEnt
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.
32 -- inherits Entity from Standard
37 QualifiedCirc from GccEnt,
38 QualifiedLin from GccEnt,
41 raises NotDone from StdFail
43 private class FuncTCuCuCu instantiates FunctionTanCuCuCu from GccIter (
44 TheCurve,TheCurveTool);
47 Create(Qualified1 : QualifiedCirc from GccEnt ;
48 Qualified2 : QualifiedCirc from GccEnt ;
49 Qualified3 : TheQualifiedCurve ;
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.
58 Create(Qualified1 : QualifiedCirc from GccEnt ;
59 Qualified2 : TheQualifiedCurve ;
60 Qualified3 : TheQualifiedCurve ;
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.
69 Create(Qualified1 : QualifiedCirc from GccEnt ;
70 Qualified2 : QualifiedLin from GccEnt ;
71 Qualified3 : TheQualifiedCurve ;
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
81 Create(Qualified1 : QualifiedCirc from GccEnt ;
82 Qualified2 : TheQualifiedCurve ;
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
92 Create(Qualified1 : QualifiedLin from GccEnt ;
93 Qualified2 : QualifiedLin from GccEnt ;
94 Qualified3 : TheQualifiedCurve ;
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.
103 Create(Qualified1 : QualifiedLin from GccEnt ;
104 Qualified2 : TheQualifiedCurve ;
105 Qualified3 : TheQualifiedCurve ;
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.
114 Create(Qualified1 : QualifiedLin from GccEnt ;
115 Qualified2 : TheQualifiedCurve ;
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
125 Create(Qualified1 : TheQualifiedCurve ;
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.
134 Create(Qualified1 : TheQualifiedCurve ;
135 Qualified2 : TheQualifiedCurve ;
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.
144 Create(Qualified1 : TheQualifiedCurve ;
145 Qualified2 : TheQualifiedCurve ;
146 Qualified3 : TheQualifiedCurve ;
151 returns Circ2d3Tan from GccIter;
152 ---Purpose: This method implements the algorithms used to
153 -- create 2d circles tangent to 3 curves.
155 -- -- ....................................................................
157 IsDone(me) returns Boolean
159 ---Purpose: This method returns True if the construction
160 -- algorithm succeeded.
162 ThisSolution(me) returns Circ2d
163 ---Purpose: Returns the solution.
164 raises NotDone from StdFail
166 ---Purpose: It raises NotDone if the construction algorithm
170 Qualif1 : out Position from GccEnt;
171 Qualif2 : out Position from GccEnt;
172 Qualif3 : out Position from GccEnt)
173 raises NotDone from StdFail
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).
182 ParSol,ParArg : out Real ;
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
192 ---Purpose: It raises NotDone if the construction algorithm
196 ParSol,ParArg : out Real ;
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
206 ---Purpose: It raises NotDone if the construction algorithm
210 ParSol,ParArg : out Real ;
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
220 ---Purpose: It raises NotDone if the construction algorithm
223 IsTheSame1(me) returns Boolean
224 -- Returns True if the solution is equal to the first argument.
225 raises NotDone from StdFail
227 ---Purpose: It raises NotDone if the construction algorithm
230 IsTheSame2(me) returns Boolean
231 -- Returns True if the solution is equal to the second argument.
232 raises NotDone from StdFail
234 ---Purpose: It raises NotDone if the construction algorithm
237 IsTheSame3(me) returns Boolean
238 -- Returns True if the solution is equal to the third argument.
239 raises NotDone from StdFail
241 ---Purpose: It raises NotDone if the construction algorithm
247 ---Purpose: True if the algorithm succeeded.
250 ---Purpose: The solutions.
252 qualifier1 : Position from GccEnt;
253 -- The qualifiers of the first argument.
255 qualifier2 : Position from GccEnt;
256 -- The qualifiers of the first argument.
258 qualifier3 : Position from GccEnt;
259 -- The qualifiers of the first argument.
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.
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.
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.
283 ---Purpose: The tangency point between the solution and the first
284 -- argument on the solution.
287 ---Purpose: The tangency point between the solution and the second
288 -- argument on the solution.
291 ---Purpose: The tangency point between the solution and the third
292 -- argument on the solution.
295 ---Purpose: The parameter of the tangency point between the solution
296 -- and the first argument on the solution.
299 ---Purpose: The parameter of the tangency point between the solution
300 -- and the second argument on the solution.
303 ---Purpose: The parameter of the tangency point between the solution
304 -- and the third argument on the solution.
307 ---Purpose: The parameter of the tangency point between the solution
308 -- and the first argument on the first argument.
311 ---Purpose: The parameter of the tangency point between the solution
312 -- and the second argument on the second argument.
315 ---Purpose: The parameter of the tangency point between the solution
316 -- and the third argument on the second argument.