#ifndef LIBA_TRAJPOLY3_H
#define LIBA_TRAJPOLY3_H
#include "a.h"
typedef struct a_trajpoly3 a_trajpoly3;
#if !defined A_TRAJPOLY3
#define A_TRAJPOLY3 3
#endif
#if defined(__cplusplus)
extern "C" {
#endif
A_EXTERN void a_trajpoly3_gen(a_trajpoly3 *ctx, a_float ts,
a_float p0, a_float p1,
a_float v0, a_float v1);
A_EXTERN void a_trajpoly3_gen0(a_trajpoly3 *ctx, a_float ts,
a_float p0, a_float p1,
a_float v0, a_float v1);
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 1)
A_EXTERN void a_trajpoly3_gen1(a_trajpoly3 *ctx);
#endif
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 2)
A_EXTERN void a_trajpoly3_gen2(a_trajpoly3 *ctx);
#endif
A_EXTERN a_float a_trajpoly3_pos(a_trajpoly3 const *ctx, a_float x);
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 1)
A_EXTERN a_float a_trajpoly3_vel(a_trajpoly3 const *ctx, a_float x);
#endif
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 2)
A_EXTERN a_float a_trajpoly3_acc(a_trajpoly3 const *ctx, a_float x);
#endif
#if defined(__cplusplus)
}
namespace a
{
typedef struct a_trajpoly3 trajpoly3;
}
#endif
struct a_trajpoly3
{
a_float p[4]; #if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 1)
a_float v[3]; #endif
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 2)
a_float a[2]; #endif
#if defined(__cplusplus)
A_INLINE void gen(a_float ts, a_float p0, a_float p1,
a_float v0 = 0, a_float v1 = 0)
{
a_trajpoly3_gen(this, ts, p0, p1, v0, v1);
}
A_INLINE void gen0(a_float ts, a_float p0, a_float p1,
a_float v0 = 0, a_float v1 = 0)
{
a_trajpoly3_gen0(this, ts, p0, p1, v0, v1);
}
A_INLINE a_float pos(a_float x) const
{
return a_trajpoly3_pos(this, x);
}
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 1)
A_INLINE void gen1() { a_trajpoly3_gen1(this); }
A_INLINE a_float vel(a_float x) const
{
return a_trajpoly3_vel(this, x);
}
#endif
#if defined(A_TRAJPOLY3) && (A_TRAJPOLY3 + 0 > 2)
A_INLINE void gen2() { a_trajpoly3_gen2(this); }
A_INLINE a_float acc(a_float x) const
{
return a_trajpoly3_acc(this, x);
}
#endif
#endif
};
#endif