65 if (!(front().t() < t + 1.0e-6 && t - 1.0e-6 < back().t())) {
73 auto it_lower = std::lower_bound(begin(), end(), t, comp);
74 if (it_lower == end()) {
75 *speed_point = back();
76 }
else if (it_lower == begin()) {
77 *speed_point = front();
79 const auto& p0 = *(it_lower - 1);
80 const auto& p1 = *it_lower;
86 speed_point->set_t(t);
87 if (p0.has_v() && p1.has_v()) {
90 if (p0.has_a() && p1.has_a()) {
93 if (p0.has_da() && p1.has_da()) {
105 if (!(front().s() < s + 1.0e-6 && s - 1.0e-6 < back().s())) {
113 auto it_lower = std::lower_bound(begin(), end(), s, comp);
114 if (it_lower == end()) {
115 *speed_point = back();
116 }
else if (it_lower == begin()) {
117 *speed_point = front();
119 const auto& p0 = *(it_lower - 1);
120 const auto& p1 = *it_lower;
124 speed_point->Clear();
125 speed_point->set_s(s);
127 if (p0.has_v() && p1.has_v()) {
130 if (p0.has_a() && p1.has_a()) {
133 if (p0.has_da() && p1.has_da()) {
T lerp(const T &x0, const double t0, const T &x1, const double t1, const double t)
Linear interpolation between two points of type T.