36 : m_initialControlVector{xInitialControlVector, yInitialControlVector},
37 m_finalControlVector{xFinalControlVector, yFinalControlVector} {
38 const auto hermite = MakeHermiteBasis();
40 ControlVectorFromArrays(xInitialControlVector, xFinalControlVector);
42 ControlVectorFromArrays(yInitialControlVector, yFinalControlVector);
45 m_coefficients.template block<1, 6>(0, 0) = (hermite * x).transpose();
46 m_coefficients.template block<1, 6>(1, 0) = (hermite * y).transpose();
50 for (
int i = 0; i < 6; i++) {
55 m_coefficients.template block<2, 1>(2, i) =
56 m_coefficients.template block<2, 1>(0, i) * (5 - i);
58 for (
int i = 0; i < 5; i++) {
63 m_coefficients.template block<2, 1>(4, i) =
64 m_coefficients.template block<2, 1>(2, i) * (4 - i);
80 return m_initialControlVector;
89 return m_finalControlVector;
95 ControlVector m_initialControlVector;
96 ControlVector m_finalControlVector;
130 return Matrixd<6, 6>{{-06.0, -03.0, -00.5, +06.0, -03.0, +00.5},
131 {+15.0, +08.0, +01.5, -15.0, +07.0, -01.0},
132 {-10.0, -06.0, -01.5, +10.0, -04.0, +00.5},
133 {+00.0, +00.0, +00.5, +00.0, +00.0, +00.0},
134 {+00.0, +01.0, +00.0, +00.0, +00.0, +00.0},
135 {+01.0, +00.0, +00.0, +00.0, +00.0, +00.0}};
147 static constexpr Vectord<6> ControlVectorFromArrays(
148 wpi::util::array<double, 3> initialVector,
149 wpi::util::array<double, 3> finalVector) {
150 return Vectord<6>{{initialVector[0]}, {initialVector[1]},
151 {initialVector[2]}, {finalVector[0]},
152 {finalVector[1]}, {finalVector[2]}};
QuinticHermiteSpline(wpi::util::array< double, 3 > xInitialControlVector, wpi::util::array< double, 3 > xFinalControlVector, wpi::util::array< double, 3 > yInitialControlVector, wpi::util::array< double, 3 > yFinalControlVector)
Constructs a quintic hermite spline with the specified control vectors.
Definition QuinticHermiteSpline.hpp:32
Eigen::Matrix< double, Rows, Cols, Options, MaxRows, MaxCols > Matrixd
Definition EigenCore.hpp:21