Abstract base class for parametric 2D Hermite splines.
Provides arc-length parameterization, heading, curvature, sampling, and high-accuracy Gauss-Legendre quadrature integration.
|
| virtual Translation2d | position (double u) const =0 |
| | Computes 2D position at spline parameter u.
|
| virtual Translation2d | velocity (double u) const =0 |
| | Computes 2D parametric velocity (first derivative) at parameter u.
|
| virtual Translation2d | acceleration (double u) const =0 |
| | Computes 2D parametric acceleration (second derivative) at parameter u.
|
| Rotation2d | heading (double u) const |
| | Computes heading angle theta at spline parameter u.
|
| units::Curvature | curvature (double u) const |
| | Computes path curvature at parameter u.
|
| double | length () const |
| | Returns total arc length of the spline in inches.
|
| double | u_from_s (double s) const |
| | Inverts arc distance s to spline parameter u.
|
| SplineSample | sample (double u) const |
| | Samples complete state (position, velocity, acceleration, heading, curvature) at parameter u.
|
| SplineSample | sample_by_s (double s) const |
| | Samples complete state at arc distance s.
|
| std::vector< Translation2d > | sample_by_count (int count) const |
| | Samples 2D positions uniformly spaced in parameter u.
|
| std::vector< Translation2d > | sample_by_spacing (double ds) const |
| | Samples 2D positions uniformly spaced by arc distance ds.
|
|
|
double | integrate_segment_length (double u0, double u1) const |
| | Computes high-accuracy arc length over sub-interval [u0, u1] using 5-point Gauss-Legendre quadrature.
|
|
void | build_arc_table_recursive (double u0, double u1, double s0, double segment_length, double max_err) |
| | Recursively builds the arc table to satisfy a linear interpolation error bound.
|
| void | build_arc_table (double max_err=1e-4) |
| | Builds pre-computed parameter u and arc-length lookup tables using adaptive refinement.
|
|
| template<size_t N> |
| static double | eval_poly (const std::array< double, N > &coeffs, double u) |
| | Evaluates polynomial P(u) using Horner's method.
|
|
template<size_t N> |
| static double | eval_poly_derivative (const std::array< double, N > &coeffs, double u) |
| | Evaluates first derivative P'(u) using Horner's method.
|
|
template<size_t N> |
| static double | eval_poly_second_derivative (const std::array< double, N > &coeffs, double u) |
| | Evaluates second derivative P''(u) using Horner's method.
|
|
static double | clamp_u (double u) |
|
static double | clamp_value (double value, double lo, double hi) |