|
Boost Users : |
From: hgrwilson (hroachewilson_at_[hidden])
Date: 2019-09-30 00:46:30
Hi all,
I am trying to interpolate some data with a *catmull_rom* spline available
in boost math (interpolation). However, the resulting spline collapses to a
single point for all /s/, corresponding to the first control point,
/points_intr[0]/.
Below, the c++ code segment of the interpolation is depicted:
std::vector<std::array<double, 2>> points_intr(16);
points_intr[0] = { 1.263270, 0.774614 };
points_intr[1] = { 1.876, 2.480 };
points_intr[2] = { 1.651110, 4.550 };
points_intr[3] = { 1.426340, 5.688 };
points_intr[4] = { 1.429, 7.054 };
points_intr[5] = { 2.073220, 8.377020 };
points_intr[6] = { 3.910, 9.140 };
points_intr[7] = { 6.430, 9.537 };
points_intr[8] = { 8.950, 9.859 };
points_intr[9] = { 11.470, 10.317 };
points_intr[10] = { 12.730, 10.6456 };
points_intr[11] = { 13.990, 11.0741 };
points_intr[12] = { 15.335, 11.6928 };
points_intr[13] = { 16.680, 12.5661 };
points_intr[14] = { 18.3538, 14.830 };
points_intr[15] = { 18.700, 16.056 };
boost::math::catmull_rom<std::array<double, 2>>
interpolator_cr(std::move(points_intr));
auto max_s = interpolator_cr.max_parameter();
std::array<double, 2> inter_points;
for (int i = 0; i < 100; i++)
{
inter_points = interpolator_cr(max_s * (i / num_points));
geometry_msgs::Point p;
p.x = inter_points[0];
p.y = inter_points[1];
p.z = z;
//p.z = inter_points[2];
marker.points.push_back(p);
DEBUG_INFO("spline %d: (x, y) %f, %f, current_s: %f",
i, p.x, p.y, max_s * (i / 100.0));
}
I'm using boost 1.71.0
-- Sent from: http://boost.2283326.n4.nabble.com/Boost-Users-f2553780.html
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net