Quintic Hermite spline segment defined by endpoint positions, tangents, and second derivatives.
P(u) = c0 + c1*u + c2*u^2 + c3*u^3 + c4*u^4 + c5*u^5, where u in [0, 1].
|
|
| QuinticHermiteSpline ()=default |
| | Default constructor.
|
| | QuinticHermiteSpline (const HermitePoint &start, const HermitePoint &end, double max_err=1e-4) |
| | Constructs quintic Hermite spline from start and end HermitePoint structures.
|
| | QuinticHermiteSpline (const Translation2d &start_pos, const Translation2d &end_pos, const Translation2d &start_tangent, const Translation2d &end_tangent, const Translation2d &start_accel, const Translation2d &end_accel, double max_err=1e-4) |
| | Constructs quintic Hermite spline from explicit 2D position, tangent, and acceleration vectors.
|
| Translation2d | position (double u) const override |
| | Computes 2D position at spline parameter u.
|
| Translation2d | velocity (double u) const override |
| | Computes 2D parametric velocity (first derivative) at parameter u.
|
| Translation2d | acceleration (double u) const override |
| | 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) |
|
std::array< double, Order+1 > | x_ |
|
std::array< double, Order+1 > | y_ |