32dbb9fb373b462321110334383634af62119b37
[occt.git] / src / AppParCurves / AppParCurves_MultiBSpCurve.cdl
1 -- Created on: 1993-09-20
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 class MultiBSpCurve from AppParCurves
24     inherits MultiCurve from AppParCurves
25
26         ---Purpose: This class describes a MultiBSpCurve approximating a Multiline.
27         --    Just as a Multiline is a set of a given number of lines, a MultiBSpCurve is a set
28         -- of a specified number of bsplines defined by:
29         -- -   A specified number of MultiPoints - the poles of a specified number of curves
30         -- -   The degree of approximation identical for each of the specified number of curves. 
31         --
32         --
33         --   Example of a MultiBSpCurve composed of a specified number of MultiPoints:
34         -- 
35         --      P1______P2_____P3______P4________........_____PNbMPoints
36         --
37         --      Q1______Q2_____Q3______Q4________........_____QNbMPoints
38         --      .                                               .
39         --      .                                               .
40         --      .                                               .
41         --      R1______R2_____R3______R4________........_____RNbMPoints
42         --
43         --     
44         --      Pi, Qi, ..., Ri are points of dimension 2 or 3.
45         --      
46         --      (Pi, Qi, ...Ri), i= 1,...NbPoles are MultiPoints.
47         --      each MultiPoint has got NbPol Poles.
48         -- MultiBSpCurves are created by the SplineValue method in the ComputeLine
49         -- class, and by the Value method in TheVariational class. MultiBSpCurve
50         -- provides the information required to create the BSpline defined by the approximation.
51
52 uses MultiPoint              from AppParCurves,
53      HArray1OfMultiPoint     from AppParCurves,
54      Array1OfMultiPoint      from AppParCurves,
55      Array1OfPnt             from TColgp,
56      Array1OfPnt2d           from TColgp,
57      Array1OfReal            from TColStd,
58      Array1OfInteger         from TColStd,
59      HArray1OfReal           from TColStd,
60      HArray1OfInteger        from TColStd,
61      Pnt                     from gp,
62      Pnt2d                   from gp,
63      Vec                     from gp,
64      Vec2d                   from gp,
65      OStream                 from Standard
66      
67   
68 raises OutOfRange        from Standard,
69        DimensionError    from Standard,
70        ConstructionError from Standard
71
72 is
73
74     Create returns MultiBSpCurve;
75         ---Purpose: returns an indefinite MultiBSpCurve.
76
77
78     Create(NbPol: Integer)
79         ---Purpose: creates a MultiBSpCurve, describing BSpline curves all 
80         --          containing the same number of MultiPoint.
81         --          An exception is raised if Degree < 0.
82
83
84     returns MultiBSpCurve from AppParCurves
85     raises OutOfRange from Standard;
86
87
88     Create(tabMU: Array1OfMultiPoint; Knots: Array1OfReal;
89            Mults: Array1OfInteger)
90         ---Purpose: creates a MultiBSpCurve, describing BSpline curves all 
91         --          containing the same number of MultiPoint.
92         --          Each MultiPoint must have NbCurves Poles.
93
94     returns MultiBSpCurve from AppParCurves
95     raises ConstructionError from Standard;
96     
97
98
99     Create(SC: MultiCurve; Knots: Array1OfReal;
100            Mults: Array1OfInteger)
101         ---Purpose: creates a MultiBSpCurve, describing BSpline 
102         --          curves, taking control points from <SC>.
103
104     returns MultiBSpCurve from AppParCurves
105     raises ConstructionError from Standard;
106
107     
108     SetKnots(me: in out; theKnots: Array1OfReal)
109         ---Purpose: Knots of the multiBSpCurve are assigned to <theknots>.
110     is static;
111
112
113     SetMultiplicities(me: in out; theMults: Array1OfInteger)
114         ---Purpose: Multiplicities of the multiBSpCurve are assigned 
115         --          to <theMults>.
116     is static;
117     
118
119     Knots(me) 
120         ---Purpose: Returns an array of Reals containing 
121         -- the multiplicities of curves resulting from the approximation.
122         ---C++: return const&
123     returns Array1OfReal
124     is static;
125     
126     Multiplicities(me) 
127         ---Purpose: Returns an array of Reals containing the
128         --  multiplicities of curves resulting from the approximation.
129         ---C++: return const&
130     returns Array1OfInteger
131     is static;
132
133     
134     Degree(me)
135         ---Purpose: returns the degree of the curve(s).
136     
137     returns Integer
138     is redefined;
139     
140     
141     Value(me; CuIndex: Integer; U: Real; Pt: out Pnt)
142         ---Purpose: returns the value of the point with a parameter U
143         --          on the BSpline curve number CuIndex.
144         --          An exception is raised if CuIndex <0 or > NbCurves.
145         --          An exception is raised if the curve dimension is 2d.
146
147     raises OutOfRange from Standard, 
148            DimensionError from Standard
149     is redefined;
150     
151     
152     Value(me; CuIndex: Integer; U: Real; Pt: out Pnt2d)
153         ---Purpose: returns the value of the point with a parameter U
154         --          on the BSpline curve number CuIndex.
155         --          An exception is raised if CuIndex <0 or > NbCurves.
156         --          An exception is raised if the curve dimension is 3d.
157
158     raises OutOfRange from Standard,
159            DimensionError from Standard
160     is redefined;
161
162     
163     D1(me; CuIndex: Integer; U: Real; Pt: out Pnt; V1: out Vec)
164         ---Purpose: returns the value of the point with a parameter U
165         --          on the BSpline curve number CuIndex.
166         --          An exception is raised if CuIndex <0 or > NbCurves.
167         --          An exception is raised if the curve dimension is 3d.
168
169     raises OutOfRange from Standard,
170            DimensionError from Standard
171     is redefined;
172
173
174     D1(me; CuIndex: Integer; U: Real; Pt: out Pnt2d; V1: out Vec2d)
175         ---Purpose: returns the value of the point with a parameter U
176         --          on the BSpline curve number CuIndex.
177         --          An exception is raised if CuIndex <0 or > NbCurves.
178         --          An exception is raised if the curve dimension is 2d.
179
180     raises OutOfRange from Standard,
181            DimensionError from Standard
182     is redefined;
183
184     D2(me; CuIndex: Integer; U: Real; Pt: out Pnt; V1: out Vec; V2: out Vec)
185         ---Purpose: returns the value of the point with a parameter U
186         --          on the BSpline curve number CuIndex.
187         --          An exception is raised if CuIndex <0 or > NbCurves.
188         --          An exception is raised if the curve dimension is 3d.
189
190     raises OutOfRange from Standard,
191            DimensionError from Standard
192     is redefined;
193
194
195     D2(me; CuIndex: Integer; U: Real; Pt: out Pnt2d; 
196            V1: out Vec2d; V2: out Vec2d)
197         ---Purpose: returns the value of the point with a parameter U
198         --          on the BSpline curve number CuIndex.
199         --          An exception is raised if CuIndex <0 or > NbCurves.
200         --          An exception is raised if the curve dimension is 2d.
201
202     raises OutOfRange from Standard,
203            DimensionError from Standard
204     is redefined;
205     
206
207     Dump(me; o: in out OStream)
208         ---Purpose: Prints on the stream o information on the current 
209         --          state of the object.
210         --          Is used to redefine the operator <<.
211
212     is redefined;
213     
214
215 fields
216
217     myknots:   HArray1OfReal;
218     mymults:   HArray1OfInteger;
219     myDegree : Integer;
220
221 end MultiBSpCurve;