23#include "absl/strings/str_cat.h"
24#include "absl/strings/str_join.h"
32 const std::array<double, 3>& start,
const double end,
const double param)
40 ComputeCoefficients(x0, dx0, ddx0, x1, param);
42 start_condition_[0] = x0;
43 start_condition_[1] = dx0;
44 start_condition_[2] = ddx0;
50 CHECK_EQ(other.
Order(), 4U);
52 for (
size_t i = 1; i < 5; ++i) {
53 coef_[i - 1] = other.
Coef(i) *
static_cast<double>(i);
58 const double p)
const {
61 return ((coef_[3] * p + coef_[2]) * p + coef_[1]) * p + coef_[0];
64 return (3.0 * coef_[3] * p + 2.0 * coef_[2]) * p + coef_[1];
67 return 6.0 * coef_[3] * p + 2.0 * coef_[2];
70 return 6.0 * coef_[3];
78 return absl::StrCat(absl::StrJoin(coef_,
"\t"),
param_,
"\n");
81void CubicPolynomialCurve1d::ComputeCoefficients(
const double x0,
87 const double p2 = param * param;
88 const double p3 = param * p2;
91 coef_[2] = 0.5 * ddx0;
92 coef_[3] = (x1 - x0 - dx0 * param - coef_[2] * p2) / p3;
CubicPolynomialCurve1d()=default
double Coef(const size_t order) const override
void DerivedFromQuarticCurve(const PolynomialCurve1d &other)
double Evaluate(const std::uint32_t order, const double p) const override
std::string ToString() const override
virtual double ParamLength() const =0
virtual size_t Order() const =0
virtual double Coef(const size_t order) const =0
Planning module main class.