Brick
Loading...
Searching...
No Matches
HermiteSpline< Order > Class Template Reference

#include <spline_base.h>

Description

template<size_t Order>
class HermiteSpline< Order >

CRTP base class for Hermite splines of specific polynomial order.

Template Parameters
OrderThe polynomial order (e.g., 3 for Cubic, 5 for Quintic).
Inheritance diagram for HermiteSpline< Order >:

Public Member Functions

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.
Public Member Functions inherited from SplineBase
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.

Protected Attributes

std::array< double, Order+1 > x_ {}
std::array< double, Order+1 > y_ {}

Additional Inherited Members

Protected Member Functions inherited from SplineBase
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.
Static Protected Member Functions inherited from SplineBase
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)

Member Function Documentation

◆ acceleration()

template<size_t Order>
Translation2d HermiteSpline< Order >::acceleration ( double u) const
inlineoverridevirtual

Computes 2D parametric acceleration (second derivative) at parameter u.

Parameters
uParameter in range [0, 1].
Returns
Second derivative vector (d^2x/du^2, d^2y/du^2).

Implements SplineBase.

◆ position()

template<size_t Order>
Translation2d HermiteSpline< Order >::position ( double u) const
inlineoverridevirtual

Computes 2D position at spline parameter u.

Parameters
uParameter in range [0, 1].
Returns
2D position vector.

Implements SplineBase.

◆ velocity()

template<size_t Order>
Translation2d HermiteSpline< Order >::velocity ( double u) const
inlineoverridevirtual

Computes 2D parametric velocity (first derivative) at parameter u.

Parameters
uParameter in range [0, 1].
Returns
First derivative vector (dx/du, dy/du).

Implements SplineBase.


The documentation for this class was generated from the following file: