KnotSequence (Knots : Array1OfReal from TColStd;
Mults : Array1OfInteger from TColStd;
- KnotSeq : in out Array1OfReal from TColStd);
+ KnotSeq : in out Array1OfReal from TColStd;
+ Periodic : Boolean = Standard_False);
KnotSequence (Knots : Array1OfReal from TColStd;
Mults : Array1OfInteger from TColStd;
FlatKnots : Array1OfReal from TColStd ;
Parameter : in Real ;
FirstNonZeroBsplineIndex : in out Integer ;
- BsplineBasis : in out Matrix from math)
+ BsplineBasis : in out Matrix from math ;
+ isPeriodic : in Boolean = Standard_False)
returns Integer ;
---Purpose: This evaluates the Bspline Basis at a
void BSplCLib::KnotSequence
(const TColStd_Array1OfReal& Knots,
const TColStd_Array1OfInteger& Mults,
- TColStd_Array1OfReal& KnotSeq)
+ TColStd_Array1OfReal& KnotSeq,
+ const Standard_Boolean Periodic)
{
- BSplCLib::KnotSequence(Knots,Mults,0,Standard_False,KnotSeq);
+ BSplCLib::KnotSequence(Knots,Mults,0,Periodic,KnotSeq);
}
//=======================================================================
const TColStd_Array1OfReal& FlatKnots,
const Standard_Real Parameter,
Standard_Integer& FirstNonZeroBsplineIndex,
- math_Matrix& BsplineBasis)
+ math_Matrix& BsplineBasis,
+ Standard_Boolean isPeriodic)
{
// the matrix must have at least DerivativeRequest + 1
// row and Order columns
BSplCLib::LocateParameter(Order - 1,
FlatKnots,
Parameter,
- Standard_False,
+ isPeriodic,
Order,
NumPoles+1,
ii,
if (V2 > vmax)
V2 = vmax;
}
- BS->Segment (U1, U2, V1, V2);
+ if (BS->IsUPeriodic() || BS->IsVPeriodic())
+ BS->CheckAndSegment (U1, U2, V1, V2);
+ else
+ BS->Segment (U1, U2, V1, V2);
TheSurface = BS;
}