|
libstp
Robotics library for Botball
|
#include <catmull_rom_spline.hpp>
Public Member Functions | |
| CatmullRomSpline (std::vector< Eigen::Vector2d > waypoints, int samples_per_segment=200) | |
| double | totalLength () const |
| int | numWaypoints () const |
| Eigen::Vector2d | positionAt (double s) const |
| Eigen::Vector2d | tangentAt (double s) const |
| double | findNearestArcLength (const Eigen::Vector2d &point, double s_hint) const |
Centripetal Catmull-Rom spline (alpha = 0.5) with arc-length reparameterization.
Stores waypoints in 2D and provides arc-length-parameterized evaluation of position and tangent. Centripetal parameterization avoids cusps and self-intersections that uniform Catmull-Rom produces on unevenly-spaced points.
Endpoint handling: the first and last control points are duplicated so the curve passes through all user-supplied waypoints.
Definition at line 22 of file catmull_rom_spline.hpp.
|
inlineexplicit |
Construct a spline through the given waypoints.
| waypoints | At least 2 points in (x, y) meters. |
| samples_per_segment | LUT density for arc-length reparameterization. |
| std::invalid_argument | if fewer than 2 waypoints. |
Definition at line 32 of file catmull_rom_spline.hpp.
|
inlinenodiscard |
Find the arc-length of the closest point on the spline to a query point.
Uses coarse LUT scan near s_hint then Newton refinement.
| point | Query point in spline frame (meters). |
| s_hint | Approximate arc-length (e.g., from previous cycle). |
Definition at line 97 of file catmull_rom_spline.hpp.
|
inlinenodiscard |
Number of user-supplied waypoints.
Definition at line 61 of file catmull_rom_spline.hpp.
|
inlinenodiscard |
Evaluate position at arc-length s (clamped to [0, totalLength]).
Definition at line 66 of file catmull_rom_spline.hpp.
|
inlinenodiscard |
Evaluate unit tangent at arc-length s.
Definition at line 75 of file catmull_rom_spline.hpp.
|
inlinenodiscard |
Total arc length of the spline in meters.
Definition at line 58 of file catmull_rom_spline.hpp.