0024002: Overall code and build procedure refactoring -- automatic
[occt.git] / src / Blend / Blend_AppFunction.cdl
1 -- Created on: 1993-09-13
2 -- Created by: Jacques GOUSSARD
3 -- Copyright (c) 1993-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 deferred class AppFunction from Blend
18
19 inherits FunctionSetWithDerivatives from math
20
21     ---Purpose: Deferred class for a function used to compute a blending
22     --          surface between two surfaces, using a guide line.
23     --          The vector <X> used in Value, Values and Derivatives methods
24     --          has to be the vector of the parametric coordinates U1,V1,
25     --          U2,V2, of the extremities of a section on the first and
26     --          second surface.
27
28 uses Vector from math,
29      Matrix from math,
30      Pnt    from gp,
31      Shape  from GeomAbs,
32      Point  from Blend,
33      Array1OfPnt     from TColgp,
34      Array1OfVec     from TColgp,
35      Array1OfPnt2d   from TColgp,
36      Array1OfVec2d   from TColgp,
37      Array1OfReal    from TColStd,
38      Array1OfInteger from TColStd
39
40
41
42 raises DomainError from Standard
43
44 is
45
46         
47     NbVariables(me)
48         ---Purpose: returns the number of variables of the function.
49         returns Integer from Standard
50         is deferred;
51
52     NbEquations(me)
53         ---Purpose: returns the number of equations of the function.
54         returns Integer from Standard
55         is deferred;
56
57     Value(me: in out; X: Vector; F: out Vector)
58         ---Purpose: computes the values <F> of the Functions for the 
59         --          variable <X>.
60         --          Returns True if the computation was done successfully, 
61         --          False otherwise.
62
63         returns Boolean from Standard
64         is deferred;
65     
66     
67     Derivatives(me: in out; X: Vector; D: out Matrix)
68         ---Purpose: returns the values <D> of the derivatives for the 
69         --          variable <X>.
70         --          Returns True if the computation was done successfully, 
71         --          False otherwise.
72
73     returns Boolean from Standard
74     is deferred;
75     
76     
77     Values(me: in out; X: Vector; F: out Vector; D: out Matrix)
78         ---Purpose: returns the values <F> of the functions and the derivatives
79         --          <D> for the variable <X>.
80         --          Returns True if the computation was done successfully, 
81         --          False otherwise.
82
83     returns Boolean from Standard
84     is deferred;
85     
86  
87     Set(me: in out; Param: Real from Standard)
88     
89         ---Purpose: Sets the value of the parameter along the guide line.
90         --          This determines the plane in which the solution has
91         --          to be found.
92
93         is deferred;
94         
95     Set(me: in out; First, Last: Real from Standard)
96     
97         ---Purpose: Sets the bounds of the parametric interval on 
98         --          the guide line.
99         --          This determines the derivatives in these values if the
100         --          function is not Cn.
101         is deferred;    
102
103
104     GetTolerance(me; Tolerance: out Vector from math; Tol: Real from Standard)
105     
106         ---Purpose: Returns in the vector Tolerance the parametric tolerance
107         --          for each of the 4 variables;
108         --          Tol is the tolerance used in 3d space.
109     
110         is deferred;
111
112
113     GetBounds(me; InfBound,SupBound: out Vector from math)
114     
115         ---Purpose: Returns in the vector InfBound the lowest values allowed
116         --          for each of the 4 variables.
117         --          Returns in the vector SupBound the greatest values allowed
118         --          for each of the 4 variables.
119     
120         is deferred;
121
122
123    IsSolution(me: in out; Sol: Vector from math; Tol: Real from Standard)
124         ---Purpose: Returns Standard_True if Sol is a zero of the function.
125         --          Tol is the tolerance used in 3d space.
126         --          The computation is made at the current value of
127         --          the parameter on the guide line.
128     
129         returns Boolean from Standard
130         is deferred; 
131          
132    GetMinimalDistance(me) 
133         ---Purpose: Returns   the    minimal  Distance  beetween   two
134         --          extremitys of calculed sections.          
135         returns  Real  from  Standard 
136         is  deferred; 
137          
138    Pnt1(me)
139         ---Purpose: Returns the point on the first support.
140         ---C++: return const &
141         returns Pnt from gp 
142         is deferred;
143
144    Pnt2(me)   
145         ---Purpose: Returns the point on the first support.
146         ---C++: return const &          
147         returns Pnt from gp 
148         is deferred;
149
150 -- Methods for the approximation
151 -- 
152     IsRational(me) returns Boolean
153         ---Purpose: Returns  if the section is rationnal
154     is deferred;
155     
156     GetSectionSize(me) returns Real
157         ---Purpose:  Returns the length of the maximum section
158     is deferred;
159     
160     GetMinimalWeight(me; Weigths  : out Array1OfReal  from TColStd)
161         ---Purpose: Compute the minimal value of weight for each poles
162         --          of all sections.
163     is deferred;
164
165     NbIntervals(me; S : Shape from GeomAbs) returns Integer
166         ---Purpose: Returns  the number  of  intervals for  continuity
167         --          <S>. May be one if Continuity(me) >= <S>
168     is deferred;
169     
170     Intervals(me; T : in out Array1OfReal from TColStd; 
171                   S : Shape from GeomAbs)
172         ---Purpose: Stores in <T> the  parameters bounding the intervals
173         --          of continuity <S>.
174         --          
175         --          The array must provide  enough room to  accomodate
176         --          for the parameters. i.e. T.Length() > NbIntervals()
177 --    raises
178 --      OutOfRange from Standard 
179     is deferred;
180
181     GetShape(me: in out;
182                  NbPoles   : out Integer from Standard;
183                  NbKnots   : out Integer from Standard;
184                  Degree    : out Integer from Standard;
185                  NbPoles2d : out Integer from Standard)
186
187         is deferred;
188
189     GetTolerance(me; 
190                  BoundTol, SurfTol, AngleTol : Real;
191                  Tol3d : out Vector;
192                  Tol1D : out Vector )
193         ---Purpose: Returns the tolerance to reach in approximation
194         --          to respecte
195         --          BoundTol error at the Boundary
196         --          AngleTol tangent error at the Boundary
197         --          SurfTol error inside the surface.
198         is deferred;
199
200     Knots(me: in out; TKnots: out Array1OfReal from TColStd)
201
202         is deferred;
203
204
205     Mults(me: in out; TMults: out Array1OfInteger from TColStd)
206
207         is deferred;
208
209
210     Section(me: in out; P: Point from Blend;
211                         Poles    : out Array1OfPnt   from TColgp;
212                         DPoles   : out Array1OfVec   from TColgp;
213                         Poles2d  : out Array1OfPnt2d from TColgp;
214                         DPoles2d : out Array1OfVec2d from TColgp;
215                         Weigths  : out Array1OfReal  from TColStd;
216                         DWeigths : out Array1OfReal  from TColStd)
217
218         ---Purpose: Used for the first and last section 
219         --          The method returns Standard_True if the derivatives
220         --          are computed, otherwise it returns Standard_False.
221
222         returns Boolean from Standard
223
224         is deferred;
225
226
227     Section(me: in out; P: Point from Blend;
228                         Poles    : out Array1OfPnt   from TColgp;
229                         Poles2d  : out Array1OfPnt2d from TColgp;
230                         Weigths  : out Array1OfReal  from TColStd)
231         is deferred;
232         
233     Section(me: in out; P: Point from Blend;
234                         Poles     : out Array1OfPnt   from TColgp;
235                         DPoles    : out Array1OfVec   from TColgp;
236                         D2Poles   : out Array1OfVec   from TColgp;
237                         Poles2d   : out Array1OfPnt2d from TColgp;
238                         DPoles2d  : out Array1OfVec2d from TColgp;
239                         D2Poles2d : out Array1OfVec2d from TColgp;
240                         Weigths   : out Array1OfReal  from TColStd;
241                         DWeigths  : out Array1OfReal  from TColStd;
242                         D2Weigths : out Array1OfReal  from TColStd)
243
244         ---Purpose: Used for the first and last section 
245         --          The method returns Standard_True if the derivatives
246         --          are computed, otherwise it returns Standard_False.
247
248         returns Boolean from Standard
249
250         is deferred;
251
252         Resolution(me; 
253                    IC2d : Integer from Standard;
254                    Tol  : Real from Standard;
255                    TolU, TolV : out Real from Standard)
256         is deferred;
257
258 -- Static function for approx
259     Parameter(me; P: Point from Blend)
260         ---Purpose: Returns  the parameter  of  the point  P. Used  to
261         --          impose the parameters in the approximation.
262         returns Real from Standard
263         is static;
264
265
266 end AppFunction;