// 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_Interpolate_HeaderFile #define _Law_Interpolate_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfReal_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Handle_Law_BSpline_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfBoolean_HeaderFile #include #endif class TColStd_HArray1OfReal; class Law_BSpline; class TColStd_HArray1OfBoolean; class StdFail_NotDone; class Standard_ConstructionError; class TColStd_Array1OfReal; //! This class is used to interpolate a BsplineCurve
//! passing through an array of points, with a C2
//! Continuity if tangency is not requested at the point.
//! If tangency is requested at the point the continuity
//! will be C1. If Perodicity is requested the curve will
//! be closed and the junction will be the first point
//! given. The curve will than be only C1
//!
//!
class Law_Interpolate { 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); } //! Tolerance is to check if the points are not too close
//! to one an other. It is also used to check if the
//! tangent vector is not too small. There should be at
//! least 2 points. If PeriodicFlag is True then the curve
//! will be periodic be periodic
Standard_EXPORT Law_Interpolate(const Handle(TColStd_HArray1OfReal)& Points,const Standard_Boolean PeriodicFlag,const Standard_Real Tolerance); //! Tolerance is to check if the points are not too close
//! to one an other. It is also used to check if the
//! tangent vector is not too small. There should be at
//! least 2 points. If PeriodicFlag is True then the curve
//! will be periodic be periodic
Standard_EXPORT Law_Interpolate(const Handle(TColStd_HArray1OfReal)& Points,const Handle(TColStd_HArray1OfReal)& Parameters,const Standard_Boolean PeriodicFlag,const Standard_Real Tolerance); //! loads initial and final tangents if any.
Standard_EXPORT void Load(const Standard_Real InitialTangent,const Standard_Real FinalTangent) ; //! loads the tangents. We should have as many tangents as
//! they are points in the array if TangentFlags.Value(i)
//! is Standard_True use the tangent Tangents.Value(i)
//! otherwise the tangent is not constrained.
//!
Standard_EXPORT void Load(const TColStd_Array1OfReal& Tangents,const Handle(TColStd_HArray1OfBoolean)& TangentFlags) ; //! Clears the tangents if any
Standard_EXPORT void ClearTangents() ; //! Makes the interpolation
Standard_EXPORT void Perform() ; Standard_EXPORT const Handle_Law_BSpline& Curve() const; Standard_EXPORT Standard_Boolean IsDone() const; protected: private: //! Interpolates in a non periodic fashion.
Standard_EXPORT void PerformNonPeriodic() ; //! Interpolates in a C1 periodic fashion.
Standard_EXPORT void PerformPeriodic() ; Standard_Real myTolerance; Handle_TColStd_HArray1OfReal myPoints; Standard_Boolean myIsDone; Handle_Law_BSpline myCurve; Handle_TColStd_HArray1OfReal myTangents; Handle_TColStd_HArray1OfBoolean myTangentFlags; Handle_TColStd_HArray1OfReal myParameters; Standard_Boolean myPeriodic; Standard_Boolean myTangentRequest; }; // other Inline functions and methods (like "C++: function call" methods) #endif