55 template<
class Time,
class Segment>
58 return time < segment.startTime();
79 template<
class TrajectoryIterator,
class Time>
80 inline TrajectoryIterator
findSegment(TrajectoryIterator first, TrajectoryIterator last,
const Time& time)
82 typedef typename std::iterator_traits<TrajectoryIterator>::value_type Segment;
85 : --std::upper_bound(first, last, time, internal::isBeforeSegment<Time, Segment>);
98 template<
class Trajectory,
class Time>
99 inline typename Trajectory::const_iterator
findSegment(
const Trajectory& trajectory,
const Time& time)
101 return findSegment(trajectory.begin(), trajectory.end(), time);
111 template<
class Trajectory,
class Time>
112 inline typename Trajectory::iterator
findSegment(Trajectory& trajectory,
const Time& time)
114 return findSegment(trajectory.begin(), trajectory.end(), time);
137 template<
class Trajectory>
138 inline typename Trajectory::const_iterator
sample(
const Trajectory& trajectory,
139 const typename Trajectory::value_type::Time& time,
140 typename Trajectory::value_type::State& state)
142 typename Trajectory::const_iterator it =
findSegment(trajectory, time);
143 if (it != trajectory.end())
145 it->sample(time, state);
147 else if (!trajectory.empty())
149 trajectory.front().sample(time, state);