0024428: Implementation of LGPL license
[occt.git] / src / IntImp / IntImp_Int2S.cdl
1 -- Created on: 1991-04-30
2 -- Created by: Isabelle GRIGNON
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 generic class Int2S from IntImp
18     (ThePSurface     as any;
19      ThePSurfaceTool as any)  -- as PSurfaceTool from IntImp (ThePSurface)
20
21         
22         ---Purpose: Determination of the intersection between 2 surfaces
23         --          from an point close to the solution.
24
25
26 uses Array1OfReal       from TColStd,
27      ConstIsoparametric from IntImp,
28      PntOn2S            from IntSurf,
29      Dir                from gp,
30      Dir2d              from gp,
31      FunctionSetRoot    from math
32
33 raises NotDone             from StdFail,
34        DomainError         from Standard,
35        ConstructionError   from Standard,
36        UndefinedDerivative from StdFail
37
38              
39     class TheFunction instantiates ZerParFunc from IntImp
40          (ThePSurface, ThePSurfaceTool);
41
42
43 is
44
45     Create 
46         ---Purpose: Raises Construction Error
47     
48         returns Int2S from IntImp;
49
50     Create( Param: Array1OfReal from TColStd;
51             S1,S2: ThePSurface;
52             TolTangency: Real)
53             
54         ---Purpose: compute the solution point with the close point
55
56         returns Int2S from IntImp;
57
58
59     Create( S1,S2: ThePSurface;
60             TolTangency: Real from Standard)
61             
62         ---Purpose: initialize the parameters to compute the solution point
63         --          it 's possible to write to optimize:
64         --            IntImp_Int2S inter(S1,S2,Func,TolTangency);
65         --            math_FunctionSetRoot rsnld(inter.Function());
66         --            while ...{
67         --               Param(1)=...
68         --               Param(2)=...
69         --               param(3)=...
70         --               inter.Perform(Param,rsnld);
71         --            }   
72
73         returns Int2S from IntImp;
74
75
76     Perform(me : in out; Param : Array1OfReal from TColStd;
77                          Rsnld : in out FunctionSetRoot from math)
78     
79      ---Purpose: returns the best constant isoparametric to find
80      --          the next intersection's point +stores the solution
81      --          point (the solution point is found with the close point
82      --          to intersect the isoparametric with the other patch;
83      --          the choice of the isoparametic is calculated)
84
85         returns ConstIsoparametric from IntImp
86         
87         is static;
88
89
90     Perform(me : in out;
91             Param : Array1OfReal from TColStd;
92             Rsnld : in out FunctionSetRoot from math;
93             ChoixIso :  ConstIsoparametric from IntImp)
94             
95      ---Purpose: returns the best constant isoparametric to find
96      --          the next intersection's point +stores the solution
97      --          point (the solution point is found with the close point
98      --          to intersect the isoparametric with the other patch;
99      --          the choice of the isoparametic is given by ChoixIso) 
100
101         returns ConstIsoparametric from IntImp
102         
103         is static;
104
105
106     IsDone(me)
107     
108         ---Purpose: Returns TRUE if the creation completed without failure.
109
110         returns Boolean from Standard
111         ---C++: inline
112
113         is static;
114
115
116     IsEmpty(me)
117     
118         ---Purpose: Returns TRUE when there is no solution to the problem.
119
120         returns Boolean from Standard
121         ---C++: inline
122
123         raises NotDone from StdFail
124         is static;
125
126     
127     Point(me)
128     
129         ---Purpose: Returns the intersection point.
130
131         returns PntOn2S from IntSurf
132         ---C++: return const&
133         ---C++: inline
134
135         raises NotDone     from StdFail,
136                DomainError from Standard
137         --          The exception NotDone is raised if IsDone is false.
138         --          The exception DomainError is raised if IsEmpty is true.
139         
140         is static;
141
142
143     IsTangent(me)
144     
145         ---Purpose: Returns True if the surfaces are tangent at the
146         --          intersection point.
147     
148         returns Boolean from Standard
149         ---C++: inline
150
151         raises NotDone     from StdFail,
152                DomainError from Standard
153         --          The exception NotDone is raised if IsDone is false.
154         --          The exception DomainError is raised if IsEmpty is true.
155         
156         is static;
157
158
159     Direction(me)
160
161         ---Purpose: Returns the tangent at the intersection line.
162
163         returns Dir from gp
164         ---C++: return const&
165         ---C++: inline
166
167         raises NotDone             from StdFail,
168                DomainError         from Standard,
169                UndefinedDerivative from StdFail
170         --          The exception NotDone is raised if IsDone is false.
171         --          The exception DomainError is raised if IsEmpty is true.
172         --          The exception UndefinedDerivative is raised if IsTangent
173         --          returns True.
174
175         is static;
176
177
178     DirectionOnS1(me)
179
180         ---Purpose: Returns the tangent at the intersection line in the
181         --          parametric space of the first surface.
182
183         returns Dir2d from gp
184         ---C++: return const&
185         ---C++: inline
186
187         raises NotDone             from StdFail,
188                DomainError         from Standard,
189                UndefinedDerivative from StdFail
190         --          The exception NotDone is raised if IsDone is false.
191         --          The exception DomainError is raised if IsEmpty is true.
192         --          The exception UndefinedDerivative is raised if IsTangent
193         --          returns True.
194
195         is static;
196
197
198     DirectionOnS2(me)
199
200         ---Purpose: Returns the tangent at the intersection line in the
201         --          parametric space of the second surface.
202
203         returns Dir2d from gp
204         ---C++: return const&
205         ---C++: inline
206
207         raises NotDone             from StdFail,
208                DomainError         from Standard,
209                UndefinedDerivative from StdFail
210         --          The exception NotDone is raised if IsDone is false.
211         --          The exception DomainError is raised if IsEmpty is true.
212         --          The exception UndefinedDerivative is raised if IsTangent
213         --          returns True.
214
215         is static;
216
217
218     Function(me: in out)
219         ---Purpose: return the math function which 
220         --          is used to compute the intersection
221
222         returns TheFunction
223         ---C++: return &
224         ---C++: inline
225
226         is static;
227     
228
229 fields
230
231     done         : Boolean from Standard;
232     empty        : Boolean from Standard;
233     pint         : PntOn2S from IntSurf;
234     tangent      : Boolean from Standard;
235     d3d          : Dir     from gp;
236     d2d1         : Dir2d   from gp;
237     d2d2         : Dir2d   from gp;
238     myZerParFunc : TheFunction;
239     tol          : Real    from Standard;
240     
241     ua0,va0,ua1,va1 : Real from Standard; -- surf1 
242     ub0,vb0,ub1,vb1 : Real from Standard; -- surf2  
243     ures1,ures2,vres1,vres2 : Real from Standard; -- U et V Resolution
244
245 end Int2S;