// Created on: 1991-08-09
// Created by: JCV
// Copyright (c) 1991-1999 Matra Datavision
-// Copyright (c) 1999-2012 OPEN CASCADE SAS
+// Copyright (c) 1999-2014 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.
+// This file is part of Open CASCADE Technology software library.
//
-// 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.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
//
-// 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.
-
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
// Modified RLE 9 Sep 1993
// pmn : modified 28-01-97 : fixed a mistake in LocateParameter (PRO6973)
#include <BSplCLib.ixx>
#include <PLib.hxx>
-#include <PLib_LocalArray.hxx>
+#include <NCollection_LocalArray.hxx>
#include <Precision.hxx>
#include <Standard_NotImplemented.hxx>
Standard_Real myBuffer[27*27];
};
-typedef PLib_LocalArray BSplCLib_LocalArray;
-
//=======================================================================
//function : Hunt
//purpose :
ak++;
}
+ Standard_Integer aLastKnotMult = Mults (Knots.Upper());
Standard_Real au,oldau = AddKnots(ak),Eps;
while (ak <= AddKnots.Upper()) {
}
else if (amult > mult) {
if (amult > Degree) amult = Degree;
- sigma += amult - mult;
+ if (k == Knots.Upper () && Periodic)
+ {
+ aLastKnotMult = Max (amult, mult);
+ sigma += 2 * (aLastKnotMult - mult);
+ }
+ else
+ {
+ sigma += amult - mult;
+ }
}
/*
// on periodic curves if this is the last knot
//instance);
//respectively AddMults() must meet this requirement if AddKnots() contains
//knot(s) coincident with first or last
- NbPoles = sigma - Mults(Knots.Upper());
+ NbPoles = sigma - aLastKnotMult;
}
else {
NbPoles = sigma - Degree - 1;
if (Periodic) {
// on periodic curve the first and last knot are delayed to the end
if (curk == Knots.Lower() || (curk == Knots.Upper())) {
- firstmult += depth;
+ if (firstmult == 0) // do that only once
+ firstmult += depth;
depth = 0;
}
}
NewRequest,
ExtrapolatingFlag[2],
ErrorCode,
- ReturnCode,
Order = Degree + 1,
FirstNonZeroBsplineIndex,
LocalRequest = DerivativeRequest ;
FirstNonZeroBsplineIndex,
BsplineBasis) ;
if (ErrorCode != 0) {
- ReturnCode = 1 ;
goto FINISH ;
}
if (ExtrapolatingFlag[0] == 0 && ExtrapolatingFlag[1] == 0) {
if (NewRequest > Degree) {
NewRequest = Degree ;
}
- BSplCLib_LocalArray LocalRealArray((LocalRequest + 1)*ArrayDimension);
+ NCollection_LocalArray<Standard_Real> LocalRealArray((LocalRequest + 1)*ArrayDimension);
Index = 0 ;
Inverse = 1.0e0 ;
NewRequest,
ExtrapolatingFlag[2],
ErrorCode,
- ReturnCode,
Order = Degree + 1,
FirstNonZeroBsplineIndex,
LocalRequest = DerivativeRequest ;
FirstNonZeroBsplineIndex,
BsplineBasis);
if (ErrorCode != 0) {
- ReturnCode = 1 ;
goto FINISH ;
}
if (ExtrapolatingFlag[0] == 0 && ExtrapolatingFlag[1] == 0) {
if (NewRequest > Degree) {
NewRequest = Degree ;
}
- BSplCLib_LocalArray LocalRealArray((LocalRequest + 1)*ArrayDimension);
+ NCollection_LocalArray<Standard_Real> LocalRealArray((LocalRequest + 1)*ArrayDimension);
Index = 0 ;
Inverse = 1.0e0 ;