Go to the documentation of this file.
27 #ifndef INC_CINOSMOVEPATHINTERPOLATOR_H
28 #define INC_CINOSMOVEPATHINTERPOLATOR_H
57 #define SECURE_INC(index) \
58 if (index<(DF_INOS_MOVEPATH_MAX_POINTS-1)){ \
62 return INOS_MOVEPATH_ERROR_ITP_MAX_SEGMENTS; \
66 #define INOS_REGISTER_MOVEPATH_INTERPOLATOR(aName, aClass ) \
67 static int aClass##RegistrationRet = CINOSMovePathInterpolator::AddInterpolator(aName, ([](CINOSMovePathCurve* c, CINOSMovePath* p){return new aClass(c, p);}));
75 class CINOSMovePathInterpolatorSegment;
93 TINOSMovePathVec& ovPos);
96 TINOSMovePathVec& ovDir);
101 TINOSMovePathVec& ovDer);
103 virtual void GetD2max(
double adBgn,
double adEnd, TINOSMovePathVec& aD2max);
105 virtual void GetD3max(
double adBgn,
double adEnd, TINOSMovePathVec& aD3max);
120 CINOSMovePathInterpolatorSegment* GetFirstSegment() {
124 CINOSMovePathInterpolatorSegment* GetLastSegment() {
125 return m_pLastSegment;
128 void AddSegment(CINOSMovePathInterpolatorSegment* apSegment);
136 const char* apInterpolatorType,
143 static int AddInterpolator(
const char* apInterpolatorType,
const TINOSInterpolatorConstructor& constructor_call);
199 typedef std::map<std::string, TINOSInterpolatorConstructor> TINOSInterpolatorMap;
235 class CINOSMovePathInterpolatorSegment* m_pLastSegment =
nullptr;
245 #endif // INC_CINOSMOVEPATHINTERPOLATOR_H
class CINOSMovePathInterpolatorSegment * m_pFirstSegment
array of interpolator segments
Definition: cinosmovepathinterpolator.h:234
bool IsBlendingAllowed(CINOSMovePathSegment *apSegment1, CINOSMovePathSegment *apSegment2)
return true if blending between segment 1 and 2 allowed
virtual void GetD3max(double adBgn, double adEnd, TINOSMovePathVec &aD3max)
get max D3 vector of given range
static TINOSInterpolatorMap & GetInterpolatorsMap()
get interpolatos map, to avoid inserting before initialization
virtual bool IsCurveContinuous(uint32 auLevel)
check if curve continuous
Definition: cinosmovepathinterpolator.h:111
virtual void GetD2max(double adBgn, double adEnd, TINOSMovePathVec &aD2max)
get max D2 vector of given range
inosName32 m_cType
interpolator type
Definition: cinosmovepathinterpolator.h:212
CINOSMovePathInterpolator(CINOSMovePathCurve *apCurve, class CINOSMovePath *apPath=NULL)
constructor
bool IsContinuous(CINOSMovePathSegment *apSegment1, CINOSMovePathSegment *apSegment2, uint32 auLevel)
return true if segment 1 and 2 are auLevel continuous
CINCOObject * GetRegister()
get pointer to inco registration (if any)
Definition: cinosmovepathinterpolator.h:194
virtual CINCOObject * RequestRegister()
return pointer to inco registration
class CINOSMovePath * GetPath()
get pointer to my path
Definition: cinosmovepathinterpolator.h:167
class CINOSMovePath * m_pPath
pointer to my path
Definition: cinosmovepathinterpolator.h:214
virtual void GetDerivative(uint32 auLevel, double adP, TINOSMovePathVec &ovDer)
get auLevel derivative vector at 'adP'
virtual ~CINOSMovePathInterpolator()
destructor
Definition: cinosmovepathinterpolator.h:152
virtual void GetDirectionLast(TINOSMovePathVec &ovDir)
get direction vector at the end
CINCOObject * m_pRegister
pointer to inco registration
Definition: cinosmovepathinterpolator.h:229
bool IsBlendingRequired(CINOSMovePathSegment *apSegment1, CINOSMovePathSegment *apSegment2)
return true if blending between segment 1 and 2 required
Definition: cinosmovepathinterpolator.h:81
virtual double GetCurveLength()
get curve length
double m_dCycleTime
cycle time
Definition: cinosmovepathinterpolator.h:222
static bool CheckInterpolatorType(const char *apInterpolatorType)
check if an interpolator with the given name is in the interpolators map
double m_dCycleTime_1
inverse cycle time
Definition: cinosmovepathinterpolator.h:224
virtual void GetDirection(double adP, TINOSMovePathVec &ovDir)
get direction vector at 'adP'
char m_cSpeedSet[64]
speedset name
Definition: cinosmovepathinterpolator.h:216
void SetPath(class CINOSMovePath *apPath)
set pointer to my path
Definition: cinosmovepathinterpolator.h:170
Definition: cinosmovepath.h:565
virtual void Cleanup()
cleanup
Definition: cinosmovepathsegment.h:44
uint32 m_uRegisterCnt
inco tree registration counter
Definition: cinosmovepathinterpolator.h:227
Definition: cinosmovepathcurve.h:55
SINOSRampParam m_sSpeedSet
speedset
Definition: cinosmovepathinterpolator.h:218
static int AddInterpolator(const char *apInterpolatorType, const TINOSInterpolatorConstructor &constructor_call)
add new interpolator constructor to the interplators map
class CINOSMovePathCurve * GetCurve()
get pointer to my curve
virtual void GetPosition(double adP, CINOSMovePathSegment *&opSegment, TINOSMovePathVec &ovPos)
get position vector at 'adP'
#define DECLARE_DYNAMIC(aClass)
Definition: cinospartitionmemory.h:328
ramp parameters
Definition: cinosbaseramp.h:502
void ReleaseRegister()
release inco registration
double m_dTolerance
requested tolerance
Definition: cinosmovepathinterpolator.h:220
virtual uint32 Prepare()
do precalculation