30 std::array<double, 2> x_final_control_vector,
31 std::array<double, 2> y_initial_control_vector,
32 std::array<double, 2> y_final_control_vector)
33 : m_initial_control_vector{x_initial_control_vector,
34 y_initial_control_vector},
35 m_final_control_vector{x_final_control_vector, y_final_control_vector} {
58 constexpr Eigen::Matrix4d basis{{+2.0, +1.0, -2.0, +1.0},
59 {-3.0, -2.0, +3.0, -1.0},
60 {+0.0, +1.0, +0.0, +0.0},
61 {+1.0, +0.0, +0.0, +0.0}};
63 Eigen::Vector4d x{m_initial_control_vector.x[0],
64 m_initial_control_vector.x[1],
65 m_final_control_vector.x[0], m_final_control_vector.x[1]};
66 Eigen::Vector4d y{m_initial_control_vector.y[0],
67 m_initial_control_vector.y[1],
68 m_final_control_vector.y[0], m_final_control_vector.y[1]};
71 m_coefficients.template block<1, 4>(0, 0) = basis * x;
72 m_coefficients.template block<1, 4>(1, 0) = basis * y;
75 for (
int i = 0; i < 4; i++) {
80 m_coefficients.template block<2, 1>(2, i) =
81 m_coefficients.template block<2, 1>(0, i) * (3 - i);
85 for (
int i = 0; i < 3; i++) {
90 m_coefficients.template block<2, 1>(4, i) =
91 m_coefficients.template block<2, 1>(2, i) * (2 - i);