45 Trajectory(std::vector<Vec3> coeffs,
double startTime,
double endTime)
46 : _coeffs(coeffs), _startTime(startTime), _endTime(endTime)
48 assert(coeffs.size() == 6);
49 assert(startTime <= endTime);
64 : _coeffs{c0, c1, c2, c3, c4, c5}, _startTime(startTime), _endTime(endTime)
66 assert(startTime <= endTime);
76 assert(t >= _startTime);
77 assert(t <= _endTime);
78 return _coeffs[0] * t * t * t * t * t + _coeffs[1] * t * t * t * t + _coeffs[2] * t * t * t +
79 _coeffs[3] * t * t + _coeffs[4] * t + _coeffs[5];
89 assert(t >= _startTime);
90 assert(t <= _endTime);
91 return _coeffs[0] * t * t * t * t * t + _coeffs[1] * t * t * t * t + _coeffs[2] * t * t * t +
92 _coeffs[3] * t * t + _coeffs[4] * t + _coeffs[5];
121 std::vector<Vec3> derivCoeffs;
122 derivCoeffs.reserve(5);
123 for (
int i = 0; i < 5; i++)
125 derivCoeffs.push_back((5 - i) * _coeffs[i]);
139 double startTime = std::max(_startTime, rhs.
GetStartTime());
140 double endTime = std::min(_endTime, rhs.
GetEndTime());
141 return Trajectory(_coeffs[0] - rhs[0], _coeffs[1] - rhs[1], _coeffs[2] - rhs[2], _coeffs[3] - rhs[3],
142 _coeffs[4] - rhs[4], _coeffs[5] - rhs[5], startTime, endTime);
170 std::vector<Vec3> _coeffs;
171 double _startTime, _endTime;
double GetEndTime() const
Return the end time of the trajectory.
Trajectory(Vec3 c0, Vec3 c1, Vec3 c2, Vec3 c3, Vec3 c4, Vec3 c5, double startTime, double endTime)
Constructor.
Vec3 GetValue(double t) const
Returns the 3D position of the polynomial at a given time.
std::vector< Vec3 > GetDerivativeCoeffs() const
Returns the coefficient of the time derivative of the trajectory.
Trajectory(std::vector< Vec3 > coeffs, double startTime, double endTime)
Constructor.
Vec3 operator[](int i) const
Returns the i-th 3D vector of coefficients.
Vec3 GetVelocity(double t) const
Returns the 3D velocity of the polynomial at a given time.
Trajectory operator-(const Trajectory rhs)
Returns the difference between this trajectory and a given trajectory.
std::vector< Vec3 > GetCoeffs()
Return the 3D vector of coefficients.
double GetStartTime() const
Return the start time of the trajectory.
3D vector class with common vector operations.