0023024: Update headers of OCCT files
[occt.git] / src / AppParCurves / AppParCurves_BSpFunction.cdl
1 -- Created on: 1993-09-21
2 -- Created by: Modelistation
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23
24
25 generic class BSpFunction from AppParCurves (
26                               MultiLine  as any;
27                               ToolLine   as any; -- as ToolLine(MultiLine)
28                               Squares    as any)
29
30     inherits MultipleVarFunctionWithGradient from math
31
32     ---Purpose: This function inherits MultipleVarFunctionWithGradient to be 
33     --          used in the mathematical algorithm BFGS.
34     --          It computes the value of the function 
35     --          F=sum(||Qui - B*Pi||)2 where Pi are Poles of the BSpline
36     --          curves approximating the given MultiLine SSP and ui the
37     --          parameters associated to the points Qi of SSP.
38     --          It also computes the gradient for values ui of the parameter.
39
40
41 uses MultiBSpCurve             from AppParCurves, 
42      HArray1OfConstraintCouple from AppParCurves,
43      Constraint                from AppParCurves,
44      Vector                    from math, 
45      IntegerVector             from math, 
46      Matrix                    from math,
47      HArray1OfInteger          from TColStd,
48      Array1OfReal              from TColStd,
49      Array1OfInteger           from TColStd
50
51 is
52
53     Create(SSP: MultiLine; FirstPoint, LastPoint: Integer;
54            TheConstraints: HArray1OfConstraintCouple;
55            Parameters: Vector; Knots: Array1OfReal;
56            Mults: Array1OfInteger; NbPol: Integer)
57        ---Purpose: initializes the fields of the function. The approximating
58        --          curve has <NbPol> control points.
59
60     returns BSpFunction from AppParCurves;
61     
62     
63     NbVariables(me)
64         ---Purpose: returns the number of variables of the function. It 
65         --          corresponds to the number of MultiPoints.
66
67     returns Integer
68     is static;
69     
70     
71
72     Perform(me: in out; X: Vector)
73         ---Purpose: this method is used each time Value or Gradient is
74         --           needed.
75     
76     is static protected;
77
78
79     Value(me: in out; X: Vector; F: out Real) 
80         ---Purpose: this method computes the new approximation of the 
81         --          MultiLine
82         --          SSP and calculates F = sum (||Pui - Bi*Pi||2) for each 
83         --          point of the MultiLine.
84     
85     returns Boolean
86     is static;
87
88
89     Gradient(me: in out; X: Vector; G: out Vector)
90         ---Purpose: returns the gradient G of the sum above for the 
91         --          parameters Xi.
92
93     returns Boolean
94     is static;
95     
96     
97     Values(me: in out; X: Vector; F: out Real; G: out Vector)
98         ---Purpose: returns the value F=sum(||Pui - Bi*Pi||)2.
99         --          returns the value G = grad(F) for the parameters Xi.
100
101     returns Boolean
102     is static;
103     
104     
105     
106     NewParameters(me)
107         ---Purpose: returns the new parameters of the MultiLine.
108         ---C++: return const&
109     returns Vector
110     is static;
111
112
113     CurveValue(me: in out)
114         ---Purpose: returns the MultiBSpCurve approximating the set after
115         --          computing the value F or Grad(F).
116
117     returns MultiBSpCurve from AppParCurves
118     is static;
119     
120
121     Error(me: in out; IPoint, CurveIndex: Integer)
122         ---Purpose: returns the distance between the MultiPoint of range 
123         --          IPoint and the curve CurveIndex.
124     
125     returns Real
126     is static;
127
128
129     MaxError3d(me)
130         ---Purpose: returns the maximum distance between the points
131         --          and the MultiBSpCurve.
132
133     returns Real
134     is static;
135     
136     MaxError2d(me)
137         ---Purpose: returns the maximum distance between the points
138         --          and the MultiBSpCurve.
139
140     returns Real
141     is static;
142
143
144     FunctionMatrix(me)
145         ---Purpose: returns the function matrix used to approximate the
146         --          multiline.
147         ---C++: return const&
148     
149     returns Matrix from math
150     is static;
151     
152
153     DerivativeFunctionMatrix(me)
154         ---Purpose: returns the derivative function matrix used to approximate the
155         --          multiline.
156         ---C++: return const&
157     
158     returns Matrix from math
159     is static;
160     
161     
162     
163     Index(me)
164         ---Purpose: Returns the indexes of the first non null values of
165         --          A and DA.
166         --          The values are non null from Index(ieme point) +1
167         --          to Index(ieme point) + degree +1.
168         ---C++: return const&
169     
170     returns IntegerVector
171     is static;
172
173     
174     FirstConstraint(me; TheConstraints: HArray1OfConstraintCouple;
175                     FirstPoint: Integer)
176         ---Purpose:
177
178     returns Constraint from AppParCurves
179     is static;
180     
181     
182     LastConstraint(me; TheConstraints: HArray1OfConstraintCouple;
183                    LastPoint: Integer)
184         ---Purpose:
185
186     returns Constraint from AppParCurves
187     is static;
188     
189
190
191     SetFirstLambda(me: in out; l1: Real)
192     is static;
193
194
195     SetLastLambda(me: in out; l2: Real)
196     is static;
197
198
199 fields
200
201 Done:           Boolean;
202 MyMultiLine :   MultiLine;
203 MyMultiBSpCurve:   MultiBSpCurve from AppParCurves;
204 nbpoles:          Integer;
205 myParameters:   Vector;
206 FVal:           Real;
207 ValGrad_F:      Vector from math;
208 MyF:            Matrix from math;
209 PTLX :          Matrix from math;
210 PTLY :          Matrix from math;
211 PTLZ :          Matrix from math;
212 A:              Matrix from math;
213 DA:             Matrix from math;
214 MyLeastSquare : Squares;
215 Contraintes:    Boolean;
216 NbP:            Integer;
217 NbCu:           Integer;
218 Adeb:           Integer;
219 Afin:           Integer;
220 tabdim:         HArray1OfInteger from TColStd;
221 ERR3d:          Real;
222 ERR2d:          Real;
223 FirstP:         Integer;
224 LastP:          Integer;
225 myConstraints:  HArray1OfConstraintCouple from AppParCurves;
226 mylambda1:      Real;
227 mylambda2:      Real;
228
229 end BSpFunction;