// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _Law_BSplineKnotSplitting_HeaderFile #define _Law_BSplineKnotSplitting_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfInteger_HeaderFile #include #endif #ifndef _Handle_Law_BSpline_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif class TColStd_HArray1OfInteger; class Standard_DimensionError; class Standard_RangeError; class Law_BSpline; class TColStd_Array1OfInteger; //! For a B-spline curve the discontinuities are localised at the
//! knot values and between two knots values the B-spline is
//! infinitely continuously differentiable.
//! At a knot of range index the continuity is equal to :
//! Degree - Mult (Index) where Degree is the degree of the
//! basis B-spline functions and Mult the multiplicity of the knot
//! of range Index.
//! If for your computation you need to have B-spline curves with a
//! minima of continuity it can be interesting to know between which
//! knot values, a B-spline curve arc, has a continuity of given order.
//! This algorithm computes the indexes of the knots where you should
//! split the curve, to obtain arcs with a constant continuity given
//! at the construction time. The splitting values are in the range
//! [FirstUKnotValue, LastUKnotValue] (See class B-spline curve from
//! package Geom).
//! If you just want to compute the local derivatives on the curve you
//! don't need to create the B-spline curve arcs, you can use the
//! functions LocalD1, LocalD2, LocalD3, LocalDN of the class
//! BSplineCurve.
class Law_BSplineKnotSplitting { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! Locates the knot values which correspond to the segmentation of
//! the curve into arcs with a continuity equal to ContinuityRange.
//! Raised if ContinuityRange is not greater or equal zero.
Standard_EXPORT Law_BSplineKnotSplitting(const Handle(Law_BSpline)& BasisLaw,const Standard_Integer ContinuityRange); //! Returns the number of knots corresponding to the splitting.
Standard_EXPORT Standard_Integer NbSplits() const; //! Returns the indexes of the BSpline curve knots corresponding to
//! the splitting.
//! Raised if the length of SplitValues is not equal to NbSPlit.
Standard_EXPORT void Splitting(TColStd_Array1OfInteger& SplitValues) const; //! Returns the index of the knot corresponding to the splitting
//! of range Index.
//! Raised if Index < 1 or Index > NbSplits
Standard_EXPORT Standard_Integer SplitValue(const Standard_Integer Index) const; protected: private: Handle_TColStd_HArray1OfInteger splitIndexes; }; // other Inline functions and methods (like "C++: function call" methods) #endif