Integration of OCCT 6.5.0 from SVN
[occt.git] / src / AppParCurves / AppParCurves_ResolConstraint.cdl
1 -- File:        ResolConstraint.cdl
2 -- Created:     Thu Jul 25 16:56:48 1991
3 -- Author:      Laurent PAINNOT
4 --              <lpa@topsn3>
5 ---Copyright:    Matra Datavision 1991, 1992
6
7
8
9  generic class ResolConstraint from AppParCurves
10                     (MultiLine   as any;
11                      ToolLine    as any)   -- as ToolLine(MultiLine)
12                 
13                                                
14     ---Purpose: This classe describes the algorithm to find the approximate
15     --          solution of a MultiLine with constraints. The resolution
16     --          algorithm is the Uzawa method. See the math package
17     --          for more information.
18     --          All the tangencies of  MultiPointConstraint's points
19     --          will be colinear.
20     --          Be careful of the curvature: it is possible to have some
21     --          curvAature points only for one curve. In this case, the Uzawa
22     --          method is used with a non-linear resolution, much more longer.
23
24
25 uses Matrix                    from math,
26      Vector                    from math,
27      Array1OfInteger           from TColStd,
28      MultiCurve                from AppParCurves,
29      HArray1OfConstraintCouple from AppParCurves
30
31
32 raises OutOfRange from Standard
33
34 is
35
36     Create(SSP: MultiLine; SCurv: in out MultiCurve; 
37            FirstPoint, LastPoint: Integer;
38            Constraints: HArray1OfConstraintCouple;
39            Bern, DerivativeBern: Matrix; Tolerance: Real = 1.0e-10)
40         ---Purpose: Given a MultiLine SSP with constraints points, this
41         --          algorithm finds the best curve solution to approximate it.
42         --          The poles from SCurv issued for example from the least
43         --          squares are used as a guess solution for the uzawa
44         --          algorithm. The tolerance used in the Uzawa algorithms 
45         --          is Tolerance.
46         --          A is the Bernstein matrix associated to the MultiLine 
47         --          and DA is the derivative bernstein matrix.(They can come 
48         --          from an approximation with ParLeastSquare.)
49         --          The MultiCurve is modified. New MultiPoles are given.
50
51
52     returns ResolConstraint from AppParCurves;
53     
54
55     IsDone(me)
56         ---Purpose: returns True if all has been correctly done.
57
58     returns Boolean
59     is static;
60
61     
62     Error(me)
63         ---Purpose: returns the maximum difference value between the curve 
64         --          and the given points.
65         
66     returns Real
67     is static;
68     
69     
70     ConstraintMatrix(me)
71         ---Purpose:
72         ---C++: return const&
73
74     returns Matrix
75     is static;
76     
77
78     Duale(me)
79         ---Purpose: returns the duale variables of the system.
80         ---C++: return const&
81     returns Vector
82     is static;
83
84     
85     ConstraintDerivative(me: in out; SSP: MultiLine; Parameters: Vector;
86                          Deg: Integer; DA: Matrix)
87         ---Purpose: Returns the derivative of the constraint matrix.
88         ---C++: return const&
89     returns Matrix
90     is static;
91     
92     
93     InverseMatrix(me)
94         ---Purpose: returns the Inverse of Cont*Transposed(Cont), where
95         --          Cont is the constraint matrix for the algorithm.
96         ---C++: return const&
97
98     returns Matrix
99     is static;
100     
101     NbConstraints(me; SSP: MultiLine; FirstPoint, LastPoint: Integer;
102                   TheConstraints: HArray1OfConstraintCouple)
103             ---Purpose: is used internally to create the fields.
104
105     returns Integer
106     is static protected;
107     
108     
109     NbColumns(me; SSP: MultiLine; Deg: Integer)
110         ---Purpose: is internally used for the fields creation.
111
112     returns Integer
113     is static protected;
114     
115
116 fields
117
118 Done:    Boolean;
119 Err:     Real;
120 Cont:    Matrix;
121 DeCont:  Matrix;
122 Secont:  Vector;
123 CTCinv:  Matrix;
124 Vardua:  Vector;
125 IncPass: Integer;
126 IncTan:  Integer;
127 IncCurv: Integer;
128 IPas:    Array1OfInteger;
129 ITan:    Array1OfInteger;
130 ICurv:   Array1OfInteger;
131
132 end ResolConstraint;