1 #ifndef PIECEWISE_POLYNOMIAL_H 2 #define PIECEWISE_POLYNOMIAL_H 4 #include "Polynomial.h" 29 PiecewisePolynomial(
const std::vector<Poly>& _segments,
const std::vector<double>& _times,
bool relative=
false);
30 PiecewisePolynomial(
const std::vector<Poly>& _segments,
const std::vector<double>& _times,
const std::vector<double>& _timeShifts);
32 int FindSegment(
double t)
const;
33 double Evaluate(
double t)
const;
34 double Derivative(
double t)
const;
35 double Derivative(
double t,
int n)
const;
36 double operator () (
double t)
const {
return Evaluate(t); }
39 inline double Start()
const {
return segments.front()(times.front()-timeShift.front()); }
40 inline double End()
const {
return segments.back()(times.back()-timeShift.back()); }
41 inline double StartTime()
const {
return times.front(); }
42 inline double EndTime()
const {
return times.back(); }
54 void Append(
const Poly& p,
double t,
bool relative=
false);
90 bool Write(
File& f)
const;
92 void operator += (
double val);
93 void operator -= (
double val);
94 void operator *= (
double val);
95 void operator /= (
double val);
100 std::vector<Poly> segments;
101 std::vector<double> timeShift;
102 std::vector<double> times;
109 typedef std::vector<double> Vector;
115 Vector Evaluate(
double t)
const;
116 Vector Derivative(
double t)
const;
117 Vector Derivative(
double t,
int n)
const;
118 Vector operator () (
double t)
const {
return Evaluate(t); }
121 Vector Start()
const;
123 double StartTime()
const;
124 double EndTime()
const;
136 bool Write(
File& f)
const;
138 std::vector<PiecewisePolynomial> elements;
144 PiecewisePolynomial PiecewiseLinear(
const std::vector<double>& milestones,
const std::vector<double>& times);
147 PiecewisePolynomialND Linear(
const std::vector<double>& a,
const std::vector<double>& b,
double ta,
double tb);
148 PiecewisePolynomialND PiecewiseLinear(
const std::vector<std::vector<double> >& milestones,
const std::vector<double>& times);
void ZeroTimeShift()
Definition: PiecewisePolynomial.cpp:176
void TrimBack(double tend)
Definition: PiecewisePolynomial.cpp:236
A simple polynomial class, p(x) = sum_{i=0}^n coef[i]*x^i.
Definition: Polynomial.h:14
void Concat(const PiecewisePolynomial &traj, bool relative=false)
Definition: PiecewisePolynomial.cpp:137
Definition: PiecewisePolynomial.h:22
void Split(double t, PiecewisePolynomial &front, PiecewisePolynomial &back) const
Definition: PiecewisePolynomial.cpp:189
void Append(const Poly &p, double t, bool relative=false)
Definition: PiecewisePolynomial.cpp:120
PiecewisePolynomial Select(double a, double b) const
Definition: PiecewisePolynomial.cpp:254
void TrimFront(double tstart)
Definition: PiecewisePolynomial.cpp:215
Definition: BSpline.cpp:9
Definition: PiecewisePolynomial.h:105
A cross-platform class for reading/writing binary data.
Definition: File.h:47
void TimeShift(double dt)
Definition: PiecewisePolynomial.cpp:168
std::pair< double, double > MaxDiscontinuity(int derivative=0) const
Definition: PiecewisePolynomial.cpp:262