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, 4>(0, 0) = hermite * x;
 
   47    m_coefficients.template block<1, 4>(1, 0) = hermite * y;
 
   51    for (
int i = 0; i < 4; i++) {
 
   56      m_coefficients.template block<2, 1>(2, i) =
 
   57          m_coefficients.template block<2, 1>(0, i) * (3 - i);
 
   60    for (
int i = 0; i < 3; i++) {
 
   65      m_coefficients.template block<2, 1>(4, i) =
 
   66          m_coefficients.template block<2, 1>(2, i) * (2 - i);
 
 
   82    return m_initialControlVector;
 
 
   91    return m_finalControlVector;
 
 
   97  ControlVector m_initialControlVector;
 
   98  ControlVector m_finalControlVector;
 
  104  static constexpr Eigen::Matrix4d MakeHermiteBasis() {
 
  125    return Eigen::Matrix4d{{+2.0, +1.0, -2.0, +1.0},
 
  126                           {-3.0, -2.0, +3.0, -1.0},
 
  127                           {+0.0, +1.0, +0.0, +0.0},
 
  128                           {+1.0, +0.0, +0.0, +0.0}};
 
  140  static constexpr Eigen::Vector4d ControlVectorFromArrays(
 
  142    return Eigen::Vector4d{{initialVector[0]},
 
 
#define WPILIB_DLLEXPORT
Definition SymbolExports.h:36
Represents a hermite spline of degree 3.
Definition CubicHermiteSpline.h:17
const ControlVector & GetInitialControlVector() const override
Returns the initial control vector that created this spline.
Definition CubicHermiteSpline.h:81
Matrixd< 6, 3+1 > Coefficients() const override
Returns the coefficients matrix.
Definition CubicHermiteSpline.h:74
CubicHermiteSpline(wpi::array< double, 2 > xInitialControlVector, wpi::array< double, 2 > xFinalControlVector, wpi::array< double, 2 > yInitialControlVector, wpi::array< double, 2 > yFinalControlVector)
Constructs a cubic hermite spline with the specified control vectors.
Definition CubicHermiteSpline.h:33
const ControlVector & GetFinalControlVector() const override
Returns the final control vector that created this spline.
Definition CubicHermiteSpline.h:90
Represents a two-dimensional parametric spline that interpolates between two points.
Definition Spline.h:27
This class is a wrapper around std::array that does compile time size checking.
Definition array.h:26
Eigen::Matrix< double, Rows, Cols, Options, MaxRows, MaxCols > Matrixd
Definition EigenCore.h:21