delphyne
|
Curve2 represents a path through two-dimensional Cartesian space.
Given a list of waypoints, it traces a path between them.
Instantiated templates for the following kinds of T's are provided:
They are already available to link against in the containing library.
TODO(jwnimmer-tri) We will soon trace the path using a spline, but for now it's easiest to just interpolate straight segments, as a starting point. Callers should not yet rely on how we are traversing between the waypoints.
#include <src/systems/curve2.h>
Classes | |
struct | PositionResult |
A result type for the GetPosition method. More... | |
Public Types | |
typedef Eigen::Matrix< double, 2, 1, Eigen::DontAlign > | Point2 |
A two-dimensional Cartesian point that is alignment-safe. More... | |
typedef Eigen::Matrix< T, 2, 1, Eigen::DontAlign > | Point2T |
Public Member Functions | |
Curve2 (const std::vector< Point2 > &waypoints) | |
Constructor that traces through the given waypoints in order. More... | |
const std::vector< Point2 > & | waypoints () const |
double | path_length () const |
PositionResult | GetPosition (const T &path_distance) const |
Returns the Curve's PositionResult::position at path_distance , as well as its first derivative PositionResult::position_dot with respect to path_distance . More... | |
typedef Eigen::Matrix<double, 2, 1, Eigen::DontAlign> Point2 |
A two-dimensional Cartesian point that is alignment-safe.
typedef Eigen::Matrix<T, 2, 1, Eigen::DontAlign> Point2T |
Constructor that traces through the given waypoints
in order.
Throws an error if waypoints.size()
== 1.
PositionResult GetPosition | ( | const T & | path_distance | ) | const |
Returns the Curve's PositionResult::position
at path_distance
, as well as its first derivative PositionResult::position_dot
with respect to path_distance
.
The path_distance
is clipped to the ends of the curve:
path_distance
is interpreted as a path_distance
of zero.path_distance
that exceeds the path_length()
of the curve is interpreted as a path_distance
equal to the path_length()
.The position_dot
derivative, when evaluated exactly at a waypoint, will be congruent with the direction of one of the (max two) segments that neighbor the waypoint. (At the first and last waypoints, there is only one neighboring segment.) TODO(jwnimmer-tri) This will no longer be true once this class uses a spline.
double path_length | ( | ) | const |
const std::vector<Point2>& waypoints | ( | ) | const |