0024830: Remove redundant keyword 'mutable' in CDL declarations
[occt.git] / src / Law / Law.cdl
1 -- Created on: 1994-04-07
2 -- Created by: Isabelle GRIGNON
3 -- Copyright (c) 1994-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 package Law 
18
19         ---Purpose: Multiple services concerning 1d functions.
20
21 uses  Adaptor3d,GeomAbs,TColgp,TColStd,TCollection,MMgt,Standard,StdFail
22
23 is
24
25     class BSpline;            -- inherits TShared from MMgt
26
27     class Interpolate;        -- duplication of GeomAPI algorithm!?!
28
29     deferred class Function;  -- inherits TShared from MMgt
30     
31     class Constant;           -- inherits Function from Law
32
33     class Linear;             -- inherits Function from Law
34
35     class BSpFunc;            -- inherits Function from Law
36
37     class S;                  -- inherits BSpFunc from Law
38
39     class Interpol;           -- inherits BSpFunc from Law
40
41     class Laws instantiates List from TCollection (Function from Law);
42
43     class Composite;          -- inherits Function from Law
44     
45     class BSplineKnotSplitting;
46         --- Purpose :
47         --  This algorithm searches the knot values corresponding to the 
48         --  splitting of a given B-spline law into  several arcs with
49         --  the same continuity. The continuity order is given at the
50         --  construction time.
51     
52     MixBnd(Lin    : Linear from Law)       
53     ---Purpose: Builds a 1d bspline that   is near from Lin with  null
54     --          derivatives at the extremities.
55     returns BSpFunc from Law;
56
57     MixBnd(Degree : Integer from Standard;
58            Knots  : Array1OfReal from TColStd;
59            Mults  : Array1OfInteger from TColStd;
60            Lin    : Linear from Law)       
61     ---Purpose: Builds  the poles of the 1d  bspline that is near from
62     --          Lin with null derivatives at the extremities.
63     returns HArray1OfReal from TColStd;
64
65     MixTgt(Degree        : Integer from Standard;
66            Knots         : Array1OfReal from TColStd;
67            Mults         : Array1OfInteger from TColStd;
68            NulOnTheRight : Boolean from Standard;
69            Index         : Integer from Standard) 
70     ---Purpose: Builds the poles of the 1d bspline that is null on the
71     --          rigth    side   of   Knots(Index)  (on  the    left if
72     --          NulOnTheRight  is  false)    and   that is     like  a
73     --          t*(1-t)(1-t) curve  on the  left side of  Knots(Index)
74     --          (on the rigth  if NulOnTheRight is false).  The result
75     --          curve is  C1 with  a derivative  equal  to 1. at first
76     --          parameter (-1 at last  parameter  if  NulOnTheRight is
77     --          false).  
78     --  Warning: Mults(Index) must greater or equal to degree-1.
79     returns HArray1OfReal from TColStd;
80
81
82     Reparametrize(Curve         : Curve   from Adaptor3d;
83                   First, Last   : Real    from Standard;
84                   HasDF, HasDL  : Boolean from Standard;
85                   DFirst, DLast : Real    from Standard;
86                   Rev           : Boolean from Standard;
87                   NbPoints      : Integer from Standard)
88     returns BSpline from Law;
89     ---Purpose: Computes a 1 d curve to  reparametrize a curve. Its an
90     --          interpolation of NbPoints  points calculated  at quasi
91     --          constant abscissa.
92
93     Scale(First, Last   : Real    from Standard;
94           HasF, HasL    : Boolean from Standard;
95           VFirst, VLast : Real    from Standard)
96     returns BSpline from Law;
97     ---Purpose: Computes a 1  d curve to  scale  a field of  tangency.
98     --          Value is 1. for t = (First+Last)/2 .
99     --          If HasFirst value for t = First is VFirst (null derivative). 
100     --          If HasLast value for t = Last is VLast (null derivative).
101     --
102     --          1.                   _     
103     --                             _/ \_    
104     --                          __/     \__
105     --                         /           \
106     --          VFirst    ____/             \     
107     --          VLast                        \____
108     --                  First                    Last  
109
110     ScaleCub(First, Last   : Real    from Standard;
111              HasF, HasL    : Boolean from Standard;
112              VFirst, VLast : Real    from Standard)
113     returns BSpline from Law;
114
115 end Law;
116
117
118