0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / AppParCurves / AppParCurves_Gradient.cdl
CommitLineData
b311480e 1-- Created on: 1991-07-25
2-- Created by: Laurent PAINNOT
3-- Copyright (c) 1991-1999 Matra Datavision
973c2be1 4-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5--
973c2be1 6-- This file is part of Open CASCADE Technology software library.
b311480e 7--
d5f74e42 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
973c2be1 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.
b311480e 13--
973c2be1 14-- Alternatively, this file may be used under the terms of Open CASCADE
15-- commercial license or contractual agreement.
7fd59977 16
17generic class Gradient from AppParCurves
18 (MultiLine as any;
19 ToolLine as any) -- as ToolLine(MultiLine)
20
21
22 ---Purpose: This algorithm uses the algorithms LeastSquare,
23 -- ResConstraint and a gradient method to approximate a set
24 -- of points (AppDef_MultiLine) with a minimization of the
25 -- sum(square(|F(i)-Qi|)) by changing the parameter.
26 -- The algorithm used is from of the mathematical
27 -- package: math_BFGS, a gradient method.
28
29
30
31uses Vector from math,
32 MultipleVarFunctionWithGradient from math,
33 MultiCurve from AppParCurves,
34 HArray1OfConstraintCouple from AppParCurves
35
36
37raises OutOfRange from Standard,
38 NotDone from StdFail
39
40
41private class ParLeastSquare instantiates LeastSquare from AppParCurves
42 (MultiLine, ToolLine);
43
44private class ResConstraint instantiates ResolConstraint from AppParCurves
45 (MultiLine, ToolLine);
46
47private class ParFunction instantiates Function from AppParCurves
48 (MultiLine, ToolLine, ParLeastSquare, ResConstraint);
49
50class Gradient_BFGS from AppParCurves
51 inherits BFGS from math
52 uses MultipleVarFunctionWithGradient from math,
53 Vector from math
54 is
55
56 Create ( F : in out MultipleVarFunctionWithGradient from math ;
57 StartingPoint : Vector from math ;
58 Tolerance3d : Real from Standard ;
59 Tolerance2d : Real from Standard ;
60 Eps : Real from Standard ;
61 NbIterations : Integer from Standard = 200 );
62
63 IsSolutionReached ( me ;
64 F : in out MultipleVarFunctionWithGradient from math )
65 returns Boolean from Standard is redefined ;
66
67 fields
68
69 myTol3d : Real from Standard ;
70 myTol2d : Real from Standard ;
71
72 end Gradient_BFGS from AppParCurves ;
73
74is
75
76 Create(SSP: MultiLine; FirstPoint, LastPoint: Integer;
77 TheConstraints: HArray1OfConstraintCouple;
78 Parameters: in out Vector; Deg: Integer;
79 Tol3d, Tol2d: Real; NbIterations: Integer = 200)
80 ---Purpose: Tries to minimize the sum (square(||Qui - Bi*Pi||))
81 -- where Pui describe the approximating Bezier curves'Poles
82 -- and Qi the MultiLine points with a parameter ui.
83 -- In this algorithm, the parameters ui are the unknowns.
84 -- The tolerance required on this sum is given by Tol.
85 -- The desired degree of the resulting curve is Deg.
86
87 returns Gradient from AppParCurves;
88
89
90 IsDone(me)
91 ---Purpose: returns True if all has been correctly done.
92
93 returns Boolean
94 is static;
95
96
97 Value(me)
98 ---Purpose: returns all the Bezier curves approximating the
99 -- MultiLine SSP after minimization of the parameter.
100
101 returns MultiCurve from AppParCurves
102 raises NotDone from StdFail
103 is static;
104
105
106 Error(me; Index: Integer)
107 ---Purpose: returns the difference between the old and the new
108 -- approximation.
109 -- An exception is raised if NotDone.
110 -- An exception is raised if Index<1 or Index>NbParameters.
111
112 returns Real
113 raises NotDone from StdFail,
114 OutOfRange from Standard
115 is static;
116
117
118 MaxError3d(me)
119 ---Purpose: returns the maximum difference between the old and the
120 -- new approximation.
121
122 returns Real
123 raises NotDone from StdFail
124 is static;
125
126
127 MaxError2d(me)
128 ---Purpose: returns the maximum difference between the old and the
129 -- new approximation.
130
131 returns Real
132 raises NotDone from StdFail
133 is static;
134
135
136 AverageError(me)
137 ---Purpose: returns the average error between the old and the
138 -- new approximation.
139
140 returns Real
141 raises NotDone from StdFail
142 is static;
143
144
145fields
146
147SCU: MultiCurve from AppParCurves;
148ParError: Vector from math;
149AvError: Real;
150MError3d: Real;
151MError2d: Real;
152Done: Boolean;
153
154end Gradient from AppParCurves;