b311480e |
1 | -- Created on: 1996-07-08 |
2 | -- Created by: Philippe MANGIN |
3 | -- Copyright (c) 1996-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 | |
17 | class GridPolynomialToPoles from Convert |
ff8178ef |
18 | ---Purpose: Convert a grid of Polynomial Surfaces |
19 | -- that are have continuity CM to an |
20 | -- Bspline Surface that has continuity |
21 | -- CM |
7fd59977 |
22 | |
23 | uses Array1OfReal from TColStd, |
24 | HArray1OfReal from TColStd, |
25 | HArray2OfReal from TColStd, |
26 | HArray1OfInteger from TColStd, |
27 | HArray2OfInteger from TColStd, |
28 | HArray2OfPnt from TColgp, |
29 | Shape from GeomAbs |
30 | raises |
31 | |
32 | DomainError from Standard, |
33 | NotDone from StdFail |
34 | |
35 | is |
36 | |
37 | Create(MaxUDegree : Integer ; |
38 | MaxVDegree : Integer ; |
39 | NumCoeff : HArray1OfInteger from TColStd ; |
40 | Coefficients : HArray1OfReal from TColStd ; |
41 | PolynomialUIntervals : HArray1OfReal from TColStd ; |
42 | PolynomialVIntervals : HArray1OfReal from TColStd ) |
43 | returns GridPolynomialToPoles |
44 | ---Purpose: To only one polynomial Surface. |
45 | -- The Length of <PolynomialUIntervals> and <PolynomialVIntervals> |
46 | -- have to be 2. |
47 | -- This values defined the parametric domain of the Polynomial Equation. |
48 | -- |
49 | -- Coefficients : |
50 | -- The <Coefficients> have to be formated than an "C array" |
51 | -- [MaxUDegree+1] [MaxVDegree+1] [3] |
52 | -- |
53 | ---Level: Public |
54 | raises DomainError; -- if <NumCoeff> is not a [1, 2] array |
55 | -- if the <Coefficients> is not a [1,(MaxUDegree+1)*(MaxVDegree+1)*3] |
56 | -- array |
57 | |
58 | |
59 | Create(NbUSurfaces : Integer; |
60 | NBVSurfaces : Integer; |
61 | UContinuity : Integer ; |
62 | VContinuity : Integer ; |
63 | MaxUDegree : Integer ; |
64 | MaxVDegree : Integer ; |
65 | NumCoeffPerSurface : HArray2OfInteger from TColStd ; |
66 | Coefficients : HArray1OfReal from TColStd ; |
67 | PolynomialUIntervals : HArray1OfReal from TColStd ; |
68 | PolynomialVIntervals : HArray1OfReal from TColStd ; |
69 | TrueUIntervals : HArray1OfReal from TColStd; |
70 | TrueVIntervals : HArray1OfReal from TColStd) |
71 | returns GridPolynomialToPoles |
72 | ---Purpose: To one grid of polynomial Surface. |
73 | -- Warning! |
74 | -- Continuity in each parametric direction can be at MOST the |
75 | -- maximum degree of the polynomial functions. |
76 | -- |
77 | -- <TrueUIntervals>, <TrueVIntervals> : |
78 | -- this is the true parameterisation for the composite surface |
79 | -- |
80 | -- Coefficients : |
81 | -- The Coefficients have to be formated than an "C array" |
82 | -- [NbVSurfaces] [NBUSurfaces] [MaxUDegree+1] [MaxVDegree+1] [3] |
83 | -- raises DomainError if <NumCoeffPerSurface> is not a |
84 | -- [1, NbVSurfaces*NbUSurfaces, 1,2] array. |
85 | -- if <Coefficients> is not a |
86 | --[1, NbVSurfaces*NBUSurfaces*(MaxUDegree+1)*(MaxVDegree+1)*3] array |
87 | raises DomainError ; |
88 | |
89 | |
90 | Perform(me : in out; |
91 | UContinuity : Integer ; |
92 | VContinuity : Integer ; |
93 | MaxUDegree : Integer ; |
94 | MaxVDegree : Integer ; |
95 | NumCoeffPerSurface : HArray2OfInteger from TColStd ; |
96 | Coefficients : HArray1OfReal from TColStd ; |
97 | PolynomialUIntervals : HArray1OfReal from TColStd ; |
98 | PolynomialVIntervals : HArray1OfReal from TColStd ; |
99 | TrueUIntervals : HArray1OfReal from TColStd ; |
100 | TrueVIntervals : HArray1OfReal from TColStd ); |
101 | |
102 | BuildArray(me; |
103 | Degree : Integer; |
104 | Knots : HArray1OfReal; |
105 | Continuty : Integer; |
106 | FlatKnots : in out HArray1OfReal; |
107 | Mults : in out HArray1OfInteger; |
108 | Parameters : in out HArray1OfReal) |
109 | is private; |
110 | |
111 | |
112 | NbUPoles(me) returns Integer ; |
113 | NbVPoles(me) returns Integer ; |
114 | |
115 | Poles(me) |
116 | ---Purpose: returns the poles of the BSpline Surface |
117 | ---C++: return const & |
118 | returns HArray2OfPnt ; |
119 | |
120 | UDegree(me) |
121 | returns Integer ; |
122 | |
123 | VDegree(me) |
124 | returns Integer ; |
125 | |
126 | NbUKnots(me) |
127 | returns Integer ; |
128 | |
129 | NbVKnots(me) |
130 | returns Integer ; |
131 | |
132 | UKnots(me) |
133 | ---Purpose: Knots in the U direction |
134 | ---C++: return const & |
135 | returns HArray1OfReal; |
136 | |
137 | VKnots(me) |
138 | ---Purpose: Knots in the V direction |
139 | ---C++: return const & |
140 | returns HArray1OfReal; |
141 | |
142 | UMultiplicities(me) |
143 | ---Purpose: Multiplicities of the knots in the U direction |
144 | ---C++: return const & |
145 | returns HArray1OfInteger; |
146 | |
147 | VMultiplicities(me) |
148 | ---Purpose: Multiplicities of the knots in the V direction |
149 | ---C++: return const & |
150 | returns HArray1OfInteger; |
151 | |
152 | IsDone(me) returns Boolean ; |
153 | |
154 | |
155 | fields |
156 | |
157 | myUFlatKnots : HArray1OfReal from TColStd ; |
158 | myVFlatKnots : HArray1OfReal from TColStd ; |
159 | myUKnots : HArray1OfReal from TColStd ; |
160 | myVKnots : HArray1OfReal from TColStd ; |
161 | myUMults : HArray1OfInteger from TColStd ; |
162 | myVMults : HArray1OfInteger from TColStd ; |
163 | myPoles : HArray2OfPnt from TColgp ; |
164 | myUDegree : Integer ; |
165 | myVDegree : Integer ; |
166 | myDone : Boolean ; |
167 | |
168 | end GridPolynomialToPoles; |