1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00
Files
occt/src/AppParCurves/AppParCurves_ResolConstraint.cdl
bugmaster b311480ed5 0023024: Update headers of OCCT files
Added appropriate copyright and license information in source files
2012-03-21 19:43:04 +04:00

148 lines
4.6 KiB
Plaintext
Executable File

-- Created on: 1991-07-25
-- Created by: Laurent PAINNOT
-- Copyright (c) 1991-1999 Matra Datavision
-- Copyright (c) 1999-2012 OPEN CASCADE SAS
--
-- The content of this file is subject to the Open CASCADE Technology Public
-- License Version 6.5 (the "License"). You may not use the content of this file
-- except in compliance with the License. Please obtain a copy of the License
-- at http://www.opencascade.org and read it completely before using this file.
--
-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
--
-- The Original Code and all software distributed under the License is
-- distributed on an "AS IS" basis, without warranty of any kind, and the
-- Initial Developer hereby disclaims all such warranties, including without
-- limitation, any warranties of merchantability, fitness for a particular
-- purpose or non-infringement. Please see the License for the specific terms
-- and conditions governing the rights and limitations under the License.
generic class ResolConstraint from AppParCurves
(MultiLine as any;
ToolLine as any) -- as ToolLine(MultiLine)
---Purpose: This classe describes the algorithm to find the approximate
-- solution of a MultiLine with constraints. The resolution
-- algorithm is the Uzawa method. See the math package
-- for more information.
-- All the tangencies of MultiPointConstraint's points
-- will be colinear.
-- Be careful of the curvature: it is possible to have some
-- curvAature points only for one curve. In this case, the Uzawa
-- method is used with a non-linear resolution, much more longer.
uses Matrix from math,
Vector from math,
Array1OfInteger from TColStd,
MultiCurve from AppParCurves,
HArray1OfConstraintCouple from AppParCurves
raises OutOfRange from Standard
is
Create(SSP: MultiLine; SCurv: in out MultiCurve;
FirstPoint, LastPoint: Integer;
Constraints: HArray1OfConstraintCouple;
Bern, DerivativeBern: Matrix; Tolerance: Real = 1.0e-10)
---Purpose: Given a MultiLine SSP with constraints points, this
-- algorithm finds the best curve solution to approximate it.
-- The poles from SCurv issued for example from the least
-- squares are used as a guess solution for the uzawa
-- algorithm. The tolerance used in the Uzawa algorithms
-- is Tolerance.
-- A is the Bernstein matrix associated to the MultiLine
-- and DA is the derivative bernstein matrix.(They can come
-- from an approximation with ParLeastSquare.)
-- The MultiCurve is modified. New MultiPoles are given.
returns ResolConstraint from AppParCurves;
IsDone(me)
---Purpose: returns True if all has been correctly done.
returns Boolean
is static;
Error(me)
---Purpose: returns the maximum difference value between the curve
-- and the given points.
returns Real
is static;
ConstraintMatrix(me)
---Purpose:
---C++: return const&
returns Matrix
is static;
Duale(me)
---Purpose: returns the duale variables of the system.
---C++: return const&
returns Vector
is static;
ConstraintDerivative(me: in out; SSP: MultiLine; Parameters: Vector;
Deg: Integer; DA: Matrix)
---Purpose: Returns the derivative of the constraint matrix.
---C++: return const&
returns Matrix
is static;
InverseMatrix(me)
---Purpose: returns the Inverse of Cont*Transposed(Cont), where
-- Cont is the constraint matrix for the algorithm.
---C++: return const&
returns Matrix
is static;
NbConstraints(me; SSP: MultiLine; FirstPoint, LastPoint: Integer;
TheConstraints: HArray1OfConstraintCouple)
---Purpose: is used internally to create the fields.
returns Integer
is static protected;
NbColumns(me; SSP: MultiLine; Deg: Integer)
---Purpose: is internally used for the fields creation.
returns Integer
is static protected;
fields
Done: Boolean;
Err: Real;
Cont: Matrix;
DeCont: Matrix;
Secont: Vector;
CTCinv: Matrix;
Vardua: Vector;
IncPass: Integer;
IncTan: Integer;
IncCurv: Integer;
IPas: Array1OfInteger;
ITan: Array1OfInteger;
ICurv: Array1OfInteger;
end ResolConstraint;