37 : m_initialControlVector{xInitialControlVector, yInitialControlVector},
38 m_finalControlVector{xFinalControlVector, yFinalControlVector} {
39 const auto hermite = MakeHermiteBasis();
41 ControlVectorFromArrays(xInitialControlVector, xFinalControlVector);
43 ControlVectorFromArrays(yInitialControlVector, yFinalControlVector);
46 m_coefficients.template block<1, 6>(0, 0) = (hermite * x).transpose();
47 m_coefficients.template block<1, 6>(1, 0) = (hermite * y).transpose();
51 for (
int i = 0; i < 6; i++) {
56 m_coefficients.template block<2, 1>(2, i) =
57 m_coefficients.template block<2, 1>(0, i) * (5 - i);
59 for (
int i = 0; i < 5; i++) {
64 m_coefficients.template block<2, 1>(4, i) =
65 m_coefficients.template block<2, 1>(2, i) * (4 - i);
81 return m_initialControlVector;
90 return m_finalControlVector;
96 ControlVector m_initialControlVector;
97 ControlVector m_finalControlVector;
131 return Matrixd<6, 6>{{-06.0, -03.0, -00.5, +06.0, -03.0, +00.5},
132 {+15.0, +08.0, +01.5, -15.0, +07.0, -01.0},
133 {-10.0, -06.0, -01.5, +10.0, -04.0, +00.5},
134 {+00.0, +00.0, +00.5, +00.0, +00.0, +00.0},
135 {+00.0, +01.0, +00.0, +00.0, +00.0, +00.0},
136 {+01.0, +00.0, +00.0, +00.0, +00.0, +00.0}};
148 static constexpr Vectord<6> ControlVectorFromArrays(
150 return Vectord<6>{{initialVector[0]}, {initialVector[1]},
151 {initialVector[2]}, {finalVector[0]},
152 {finalVector[1]}, {finalVector[2]}};
QuinticHermiteSpline(wpi::array< double, 3 > xInitialControlVector, wpi::array< double, 3 > xFinalControlVector, wpi::array< double, 3 > yInitialControlVector, wpi::array< double, 3 > yFinalControlVector)
Constructs a quintic hermite spline with the specified control vectors.
Definition QuinticHermiteSpline.h:33
Eigen::Matrix< double, Rows, Cols, Options, MaxRows, MaxCols > Matrixd
Definition EigenCore.h:21