1 -- Created on: 1993-03-09
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
6 -- This file is part of Open CASCADE Technology software library.
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.
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
17 -- RBD : 15/10/98 ; Suppression de la methode privee coefficientsOK
20 class BezierSurface from Geom inherits BoundedSurface from Geom
22 ---Purpose : Describes a rational or non-rational Bezier surface.
23 -- - A non-rational Bezier surface is defined by a table
24 -- of poles (also known as control points).
25 -- - A rational Bezier surface is defined by a table of
26 -- poles with varying associated weights.
27 -- This data is manipulated using two associative 2D arrays:
28 -- - the poles table, which is a 2D array of gp_Pnt, and
29 -- - the weights table, which is a 2D array of reals.
30 -- The bounds of these arrays are:
31 -- - 1 and NbUPoles for the row bounds, where
32 -- NbUPoles is the number of poles of the surface
33 -- in the u parametric direction, and
34 -- - 1 and NbVPoles for the column bounds, where
35 -- NbVPoles is the number of poles of the surface
36 -- in the v parametric direction.
37 -- The poles of the surface, the "control points", are the
38 -- points used to shape and reshape the surface. They
39 -- comprise a rectangular network of points:
40 -- - The points (1, 1), (NbUPoles, 1), (1,
41 -- NbVPoles) and (NbUPoles, NbVPoles)
42 -- are the four parametric "corners" of the surface.
43 -- - The first column of poles and the last column of
44 -- poles define two Bezier curves which delimit the
45 -- surface in the v parametric direction. These are
46 -- the v isoparametric curves corresponding to
47 -- values 0 and 1 of the v parameter.
48 -- - The first row of poles and the last row of poles
49 -- define two Bezier curves which delimit the surface
50 -- in the u parametric direction. These are the u
51 -- isoparametric curves corresponding to values 0
52 -- and 1 of the u parameter.
53 -- It is more difficult to define a geometrical significance
54 -- for the weights. However they are useful for
55 -- representing a quadric surface precisely. Moreover, if
56 -- the weights of all the poles are equal, the surface has
57 -- a polynomial equation, and hence is a "non-rational surface".
58 -- The non-rational surface is a special, but frequently
59 -- used, case, where all poles have identical weights.
60 -- The weights are defined and used only in the case of
61 -- a rational surface. This rational characteristic is
62 -- defined in each parametric direction. Hence, a
63 -- surface can be rational in the u parametric direction,
64 -- and non-rational in the v parametric direction.
65 -- Likewise, the degree of a surface is defined in each
66 -- parametric direction. The degree of a Bezier surface
67 -- in a given parametric direction is equal to the number
68 -- of poles of the surface in that parametric direction,
69 -- minus 1. This must be greater than or equal to 1.
70 -- However, the degree for a Geom_BezierSurface is
71 -- limited to a value of (25) which is defined and
72 -- controlled by the system. This value is returned by the
73 -- function MaxDegree.
74 -- The parameter range for a Bezier surface is [ 0, 1 ]
75 -- in the two parametric directions.
76 -- A Bezier surface can also be closed, or open, in each
77 -- parametric direction. If the first row of poles is
78 -- identical to the last row of poles, the surface is closed
79 -- in the u parametric direction. If the first column of
80 -- poles is identical to the last column of poles, the
81 -- surface is closed in the v parametric direction.
82 -- The continuity of a Bezier surface is infinite in the u
83 -- parametric direction and the in v parametric direction.
84 -- Note: It is not possible to build a Bezier surface with
85 -- negative weights. Any weight value that is less than,
86 -- or equal to, gp::Resolution() is considered
87 -- to be zero. Two weight values, W1 and W2, are
88 -- considered equal if: |W2-W1| <= gp::Resolution()
91 uses Array1OfReal from TColStd,
92 Array2OfReal from TColStd,
93 HArray2OfReal from TColStd,
94 Array1OfPnt from TColgp,
95 Array2OfPnt from TColgp,
98 HArray2OfPnt from TColgp,
107 raises ConstructionError from Standard,
108 DimensionError from Standard,
109 RangeError from Standard,
110 OutOfRange from Standard
114 Create (SurfacePoles : Array2OfPnt from TColgp)
115 returns BezierSurface
117 -- Creates a non-rational Bezier surface with a set of poles.
118 -- Control points representation :
119 -- SPoles(Uorigin,Vorigin) ...................SPoles(Uorigin,Vend)
122 -- SPoles(Uend, Vorigin) .....................SPoles(Uend, Vend)
123 -- For the double array the row indice corresponds to the parametric
124 -- U direction and the columns indice corresponds to the parametric
126 -- The weights are defaulted to all being 1.
127 raises ConstructionError;
129 -- Raised if the number of poles of the surface is lower than 2
130 -- or greater than MaxDegree + 1 in one of the two directions
134 Create (SurfacePoles : Array2OfPnt from TColgp;
135 PoleWeights : Array2OfReal from TColStd)
136 returns BezierSurface
138 -- Creates a rational Bezier surface with a set of poles and a
140 -- For the double array the row indice corresponds to the parametric
141 -- U direction and the columns indice corresponds to the parametric
143 -- If all the weights are identical the surface is considered as
144 -- non-rational (the tolerance criterion is Resolution from package
146 raises ConstructionError;
148 -- Raised if SurfacePoles and PoleWeights have not the same
149 -- Rowlength or have not the same ColLength.
150 -- Raised if PoleWeights (i, j) <= Resolution from gp;
151 -- Raised if the number of poles of the surface is lower than 2
152 -- or greater than MaxDegree + 1 in one of the two directions U or V.
155 ExchangeUV (me : mutable);
156 ---Purpose : Exchanges the direction U and V on a Bezier surface
158 -- - the poles and weights tables are transposed,
159 -- - degrees, rational characteristics and so on are
160 -- exchanged between the two parametric directions, and
161 -- - the orientation of the surface is reversed.
163 Increase (me : mutable; UDeg, VDeg : Integer)
164 ---Purpose : Increases the degree of this Bezier surface in the two parametric directions.
165 raises ConstructionError;
167 -- Raised if UDegree < UDegree <me> or VDegree < VDegree <me>
168 -- Raised if the degree of the surface is greater than MaxDegree
169 -- in one of the two directions U or V.
172 InsertPoleColAfter (me : mutable; VIndex : Integer;
173 CPoles : Array1OfPnt from TColgp)
175 -- Inserts a column of poles. If the surface is rational the weights
176 -- values associated with CPoles are equal defaulted to 1.
179 -- Raised if Vindex < 1 or VIndex > NbVPoles.
182 -- raises if VDegree is greater than MaxDegree.
183 -- raises if the Length of CPoles is not equal to NbUPoles
186 InsertPoleColAfter (me : mutable; VIndex : Integer;
187 CPoles : Array1OfPnt from TColgp;
188 CPoleWeights : Array1OfReal from TColStd)
190 -- Inserts a column of poles and weights.
191 -- If the surface was non-rational it can become rational.
194 -- Raised if Vindex < 1 or VIndex > NbVPoles.
196 ---Purpose : Raised if
197 -- . VDegree is greater than MaxDegree.
198 -- . the Length of CPoles is not equal to NbUPoles
199 -- . a weight value is lower or equal to Resolution from
203 InsertPoleColBefore (me : mutable; VIndex : Integer;
204 CPoles : Array1OfPnt from TColgp)
206 -- Inserts a column of poles. If the surface is rational the weights
207 -- values associated with CPoles are equal defaulted to 1.
210 -- Raised if Vindex < 1 or VIndex > NbVPoles.
213 -- Raised if VDegree is greater than MaxDegree.
214 -- Raised if the Length of CPoles is not equal to NbUPoles
218 InsertPoleColBefore (me : mutable; VIndex : Integer;
219 CPoles : Array1OfPnt from TColgp;
220 CPoleWeights : Array1OfReal from TColStd)
222 -- Inserts a column of poles and weights.
223 -- If the surface was non-rational it can become rational.
226 -- Raised if Vindex < 1 or VIndex > NbVPoles.
228 ---Purpose : Raised if :
229 -- . VDegree is greater than MaxDegree.
230 -- . the Length of CPoles is not equal to NbUPoles
231 -- . a weight value is lower or equal to Resolution from
235 InsertPoleRowAfter (me : mutable; UIndex : Integer;
236 CPoles : Array1OfPnt from TColgp)
238 -- Inserts a row of poles. If the surface is rational the weights
239 -- values associated with CPoles are equal defaulted to 1.
242 -- Raised if Uindex < 1 or UIndex > NbUPoles.
245 -- Raised if UDegree is greater than MaxDegree.
246 -- Raised if the Length of CPoles is not equal to NbVPoles
249 InsertPoleRowAfter (me : mutable; UIndex : Integer;
250 CPoles : Array1OfPnt from TColgp;
251 CPoleWeights : Array1OfReal from TColStd)
253 -- Inserts a row of poles and weights.
254 -- If the surface was non-rational it can become rational.
257 -- Raised if Uindex < 1 or UIndex > NbUPoles.
259 ---Purpose : Raised if :
260 -- . UDegree is greater than MaxDegree.
261 -- . the Length of CPoles is not equal to NbVPoles
262 -- . a weight value is lower or equal to Resolution from
266 InsertPoleRowBefore (me : mutable; UIndex : Integer;
267 CPoles : Array1OfPnt from TColgp)
269 -- Inserts a row of poles. If the surface is rational the weights
270 -- values associated with CPoles are equal defaulted to 1.
273 -- Raised if Uindex < 1 or UIndex > NbUPoles.
276 -- Raised if UDegree is greater than MaxDegree.
277 -- Raised if the Length of CPoles is not equal to NbVPoles
280 InsertPoleRowBefore (me : mutable; UIndex : Integer;
281 CPoles : Array1OfPnt from TColgp;
282 CPoleWeights : Array1OfReal from TColStd)
284 -- Inserts a row of poles and weights.
285 -- If the surface was non-rational it can become rational.
288 -- Raised if Uindex < 1 or UIndex > NbUPoles.
290 ---Purpose : Raised if :
291 -- . UDegree is greater than MaxDegree.
292 -- . the Length of CPoles is not equal to NbVPoles
293 -- . a weight value is lower or equal to Resolution from
297 RemovePoleCol (me : mutable; VIndex : Integer)
298 ---Purpose : Removes a column of poles.
299 -- If the surface was rational it can become non-rational.
300 raises ConstructionError,
302 -- Raised if NbVPoles <= 2 after removing, a Bezier surface
303 -- must have at least two columns of poles.
305 ---Purpose : Raised if Vindex < 1 or VIndex > NbVPoles
308 RemovePoleRow (me : mutable; UIndex : Integer)
309 ---Purpose : Removes a row of poles.
310 -- If the surface was rational it can become non-rational.
311 raises ConstructionError,
313 -- Raised if NbUPoles <= 2 after removing, a Bezier surface
314 -- must have at least two rows of poles.
316 ---Purpose : Raised if Uindex < 1 or UIndex > NbUPoles
319 Segment (me : mutable; U1, U2, V1, V2 : Real);
320 ---Purpose : Modifies this Bezier surface by segmenting it
321 -- between U1 and U2 in the u parametric direction,
322 -- and between V1 and V2 in the v parametric
323 -- direction. U1, U2, V1, and V2 can be outside the
324 -- bounds of this surface.
325 -- - U1 and U2 isoparametric Bezier curves,
326 -- segmented between V1 and V2, become the two
327 -- bounds of the surface in the v parametric
328 -- direction (0. and 1. u isoparametric curves).
329 -- - V1 and V2 isoparametric Bezier curves,
330 -- segmented between U1 and U2, become the two
331 -- bounds of the surface in the u parametric
332 -- direction (0. and 1. v isoparametric curves).
333 -- The poles and weights tables are modified, but the
334 -- degree of this surface in the u and v parametric
335 -- directions does not change.
336 -- U1 can be greater than U2, and V1 can be greater
337 -- than V2. In these cases, the corresponding
338 -- parametric direction is inverted. The orientation of
339 -- the surface is inverted if one (and only one)
340 -- parametric direction is inverted.
343 SetPole (me : mutable; UIndex, VIndex : Integer; P : Pnt)
344 ---Purpose : Modifies a pole value.
345 -- If the surface is rational the weight of range (UIndex, VIndex)
349 -- Raised if UIndex < 1 or UIndex > NbUPoles or VIndex < 1
350 -- or VIndex > NbVPoles.
353 SetPole (me : mutable; UIndex, VIndex : Integer; P : Pnt; Weight : Real)
355 -- Substitutes the pole and the weight of range UIndex, VIndex.
356 -- If the surface <me> is not rational it can become rational.
357 -- if the surface was rational it can become non-rational.
360 -- raises if UIndex < 1 or UIndex > NbUPoles or VIndex < 1
361 -- or VIndex > NbVPoles.
363 ---Purpose : Raised if Weight <= Resolution from package gp.
366 SetPoleCol (me : mutable; VIndex : Integer;
367 CPoles : Array1OfPnt from TColgp)
368 ---Purpose : Modifies a column of poles.
369 -- The length of CPoles can be lower but not greater than NbUPoles
370 -- so you can modify just a part of the column.
372 ---Purpose : Raised if VIndex < 1 or VIndex > NbVPoles
375 -- Raised if CPoles.Lower() < 1 or CPoles.Upper() > NbUPoles
378 SetPoleCol (me : mutable; VIndex : Integer;
379 CPoles : Array1OfPnt from TColgp;
380 CPoleWeights : Array1OfReal from TColStd)
381 ---Purpose : Modifies a column of poles.
382 -- If the surface was rational it can become non-rational
383 -- If the surface was non-rational it can become rational.
384 -- The length of CPoles can be lower but not greater than NbUPoles
385 -- so you can modify just a part of the column.
387 ---Purpose : Raised if VIndex < 1 or VIndex > NbVPoles
390 -- Raised if CPoles.Lower() < 1 or CPoles.Upper() > NbUPoles
391 -- Raised if CPoleWeights and CPoles have not the same bounds.
392 -- Raised if one of the weight value CPoleWeights (i) is lower
393 -- or equal to Resolution from package gp.
396 SetPoleRow (me : mutable; UIndex : Integer;
397 CPoles : Array1OfPnt from TColgp)
398 ---Purpose : Modifies a row of poles.
399 -- The length of CPoles can be lower but not greater than NbVPoles
400 -- so you can modify just a part of the row.
402 ---Purpose : Raised if UIndex < 1 or UIndex > NbUPoles
405 -- Raised if CPoles.Lower() < 1 or CPoles.Upper() > NbVPoles
409 SetPoleRow (me : mutable; UIndex : Integer;
410 CPoles : Array1OfPnt from TColgp;
411 CPoleWeights : Array1OfReal from TColStd)
412 ---Purpose : Modifies a row of poles and weights.
413 -- If the surface was rational it can become non-rational.
414 -- If the surface was non-rational it can become rational.
415 -- The length of CPoles can be lower but not greater than NbVPoles
416 -- so you can modify just a part of the row.
418 ---Purpose : Raised if UIndex < 1 or UIndex > NbUPoles
421 -- Raised if CPoles.Lower() < 1 or CPoles.Upper() > NbVPoles
422 -- Raised if CPoleWeights and CPoles have not the same bounds.
423 -- Raised if one of the weight value CPoleWeights (i) is lower
424 -- or equal to Resolution from gp.
427 SetWeight (me : mutable; UIndex, VIndex : Integer; Weight : Real)
429 -- Modifies the weight of the pole of range UIndex, VIndex.
430 -- If the surface was non-rational it can become rational.
431 -- If the surface was rational it can become non-rational.
434 -- Raised if UIndex < 1 or UIndex > NbUPoles or VIndex < 1 or
435 -- VIndex > NbVPoles.
437 ---Purpose : Raised if Weight <= Resolution from package gp.
440 SetWeightCol (me : mutable; VIndex : Integer;
441 CPoleWeights : Array1OfReal from TColStd)
442 ---Purpose : Modifies a column of weights.
443 -- If the surface was rational it can become non-rational.
444 -- If the surface was non-rational it can become rational.
445 -- The length of CPoleWeights can be lower but not greater than
448 ---Purpose : Raised if VIndex < 1 or VIndex > NbVPoles
451 -- Raised if CPoleWeights.Lower() < 1 or CPoleWeights.Upper() >
453 -- Raised if one of the weight value CPoleWeights (i) is lower
454 -- or equal to Resolution from package gp.
457 SetWeightRow (me : mutable; UIndex : Integer;
458 CPoleWeights : Array1OfReal from TColStd)
459 ---Purpose : Modifies a row of weights.
460 -- If the surface was rational it can become non-rational.
461 -- If the surface was non-rational it can become rational.
462 -- The length of CPoleWeights can be lower but not greater than
465 ---Purpose : Raised if UIndex < 1 or UIndex > NbUPoles
468 -- Raised if CPoleWeights.Lower() < 1 or CPoleWeights.Upper() >
470 -- Raised if one of the weight value CPoleWeights (i) is lower
471 -- or equal to Resolution from package gp.
474 UReverse (me : mutable);
475 ---Purpose : Changes the orientation of this Bezier surface in the
476 -- u parametric direction. The bounds of the
477 -- surface are not changed, but the given parametric
478 -- direction is reversed. Hence, the orientation of the surface is reversed.
481 UReversedParameter (me; U : Real) returns Real;
482 ---Purpose: Computes the u (or v) parameter on the modified
483 -- surface, produced by reversing its u (or v) parametric
484 -- direction, for any point of u parameter U (or of v
485 -- parameter V) on this Bezier surface.
486 -- In the case of a Bezier surface, these functions return respectively:
490 VReverse (me : mutable);
491 ---Purpose : Changes the orientation of this Bezier surface in the
492 -- v parametric direction. The bounds of the
493 -- surface are not changed, but the given parametric
494 -- direction is reversed. Hence, the orientation of the
495 -- surface is reversed.
498 VReversedParameter (me; V : Real) returns Real;
499 ---Purpose: Computes the u (or v) parameter on the modified
500 -- surface, produced by reversing its u (or v) parametric
501 -- direction, for any point of u parameter U (or of v
502 -- parameter V) on this Bezier surface.
503 -- In the case of a Bezier surface, these functions return respectively:
507 Bounds (me; U1, U2, V1, V2 : out Real);
508 ---Purpose : Returns the parametric bounds U1, U2, V1 and V2 of
509 -- this Bezier surface.
510 -- In the case of a Bezier surface, this function returns
511 -- U1 = 0, V1 = 0, U2 = 1, V2 = 1.
514 Continuity (me) returns Shape from GeomAbs;
516 -- Returns the continuity of the surface CN : the order of
517 -- continuity is infinite.
519 D0 (me; U, V : Real; P : out Pnt);
521 D1 (me; U, V : Real; P : out Pnt; D1U, D1V : out Vec);
523 D2 (me; U, V : Real; P : out Pnt; D1U, D1V, D2U, D2V, D2UV : out Vec);
525 D3 (me; U, V : Real; P : out Pnt;
526 D1U, D1V, D2U, D2V, D2UV, D3U, D3V, D3UUV, D3UVV : out Vec);
527 ---Purpose: Computes P, the point of parameters (U, V) of this Bezier surface, and
528 -- - one or more of the following sets of vectors:
529 -- - D1U and D1V, the first derivative vectors at this point,
530 -- - D2U, D2V and D2UV, the second derivative
531 -- vectors at this point,
532 -- - D3U, D3V, D3UUV and D3UVV, the third
533 -- derivative vectors at this point.
534 -- Note: The parameters U and V can be outside the bounds of the surface.
536 DN (me; U, V : Real; Nu, Nv : Integer) returns Vec
537 ---Purpose : Computes the derivative of order Nu in the u
538 -- parametric direction, and Nv in the v parametric
539 -- direction, at the point of parameters (U, V) of this Bezier surface.
540 -- Note: The parameters U and V can be outside the bounds of the surface.
542 -- Standard_RangeError if:
543 -- - Nu + Nv is less than 1, or Nu or Nv is negative.
546 NbUPoles (me) returns Integer;
547 ---Purpose : Returns the number of poles in the U direction.
549 NbVPoles (me) returns Integer;
550 ---Purpose : Returns the number of poles in the V direction.
553 Pole (me; UIndex, VIndex : Integer) returns Pnt
554 ---Purpose : Returns the pole of range UIndex, VIndex
556 ---Purpose : Raised if UIndex < 1 or UIndex > NbUPoles, or
557 -- VIndex < 1 or VIndex > NbVPoles.
560 Poles (me; P : out Array2OfPnt from TColgp)
561 ---Purpose : Returns the poles of the Bezier surface.
562 raises DimensionError;
564 -- Raised if the length of P in the U an V direction is not equal to
565 -- NbUPoles and NbVPoles.
568 UDegree (me) returns Integer;
570 -- Returns the degree of the surface in the U direction it is
574 UIso (me; U : Real) returns Curve;
576 -- Computes the U isoparametric curve. For a Bezier surface the
577 -- UIso curve is a Bezier curve.
580 VDegree (me) returns Integer;
582 -- Returns the degree of the surface in the V direction it is
586 VIso (me; V : Real) returns Curve;
588 -- Computes the V isoparametric curve. For a Bezier surface the
589 -- VIso curve is a Bezier curve.
592 Weight (me; UIndex, VIndex : Integer) returns Real
593 ---Purpose : Returns the weight of range UIndex, VIndex
596 -- Raised if UIndex < 1 or UIndex > NbUPoles, or
597 -- VIndex < 1 or VIndex > NbVPoles.
600 Weights (me; W : out Array2OfReal from TColStd)
601 ---Purpose : Returns the weights of the Bezier surface.
602 raises DimensionError;
604 -- Raised if the length of W in the U an V direction is not
605 -- equal to NbUPoles and NbVPoles.
608 IsUClosed (me) returns Boolean;
610 -- Returns True if the first control points row and the
611 -- last control points row are identical. The tolerance
612 -- criterion is Resolution from package gp.
615 IsVClosed (me) returns Boolean;
617 -- Returns True if the first control points column
618 -- and the last control points column are identical.
619 -- The tolerance criterion is Resolution from package gp.
622 IsCNu (me; N : Integer) returns Boolean;
623 ---Purpose : Returns True, a Bezier surface is always CN
626 IsCNv (me; N : Integer) returns Boolean;
627 ---Purpose : Returns True, a BezierSurface is always CN
630 IsUPeriodic (me) returns Boolean;
631 ---Purpose : Returns False.
634 IsVPeriodic (me) returns Boolean;
635 ---Purpose : Returns False.
638 IsURational (me) returns Boolean;
640 -- Returns False if the weights are identical in the U direction,
641 -- The tolerance criterion is Resolution from package gp.
644 -- if Weights = |0.5, 0.5, 0.5| returns False
648 IsVRational (me) returns Boolean;
650 -- Returns False if the weights are identical in the V direction,
651 -- The tolerance criterion is Resolution from package gp.
654 -- if Weights = |1.0, 2.0, 0.5| returns False
658 Transform (me : mutable; T : Trsf);
659 ---Purpose: Applies the transformation T to this Bezier surface.
661 MaxDegree (myclass) returns Integer;
663 -- Returns the value of the maximum polynomial degree of a
664 -- Bezier surface. This value is 25.
667 Create (SurfacePoles, SurfaceCoefficients : HArray2OfPnt from TColgp;
668 PoleWeights, CoefficientWeights : HArray2OfReal from TColStd;
669 IsURational, IsVRational : Boolean)
670 returns BezierSurface
674 Resolution(me : mutable;
676 UTolerance : out Real ;
677 VTolerance : out Real) ;
678 ---Purpose: Computes two tolerance values for this Bezier
679 -- surface, based on the given tolerance in 3D space
680 -- Tolerance3D. The tolerances computed are:
681 -- - UTolerance in the u parametric direction, and
682 -- - VTolerance in the v parametric direction.
683 -- If f(u,v) is the equation of this Bezier surface,
684 -- UTolerance and VTolerance guarantee that:
685 -- | u1 - u0 | < UTolerance and
686 -- | v1 - v0 | < VTolerance
687 -- ====> |f (u1,v1) - f (u0,v0)| < Tolerance3D
690 Copy (me) returns like me;
691 ---Purpose: Creates a new object which is a copy of this Bezier surface.
693 Init (me : mutable; Poles : HArray2OfPnt from TColgp;
694 Weights : HArray2OfReal from TColStd)
696 ---Purpose : Set poles to Poles, weights to Weights (not
698 -- Create the arrays of coefficients. Poles
699 -- and Weights are assumed to have the first
702 raises ConstructionError -- if nbpoles < 2 or nbpoles > MaDegree
707 UpdateCoefficients(me : mutable;
708 U : Real from Standard = 0.0;
709 V : Real from Standard = 0.0)
710 ---Purpose: Recompute the coeficients.
719 poles : HArray2OfPnt from TColgp;
720 weights : HArray2OfReal from TColStd;
722 coeffs : HArray2OfPnt from TColgp;
723 wcoeffs : HArray2OfReal from TColStd;
725 ucacheparameter : Real ;
726 vcacheparameter : Real ;
727 -- Parameters at which the Taylor expension is stored in
729 ucachespanlenght : Real ;
730 vcachespanlenght : Real ;
731 -- the span for which the cache is valid if
733 validcache : Integer ;
735 -- usefull to evaluate the parametric resolutions
736 umaxderivinv : Real from Standard;
737 vmaxderivinv : Real from Standard;
738 maxderivinvok : Boolean from Standard;