From 2b340be9bfd96e18167816efd32686dfdad64cd8 Mon Sep 17 00:00:00 2001 From: Steve Tonneau <stonneau@laas.fr> Date: Tue, 4 Apr 2017 15:49:55 +0200 Subject: [PATCH] accessor to waypoints --- include/spline/bezier_curve.h | 5 +++++ python/spline_python.cpp | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/spline/bezier_curve.h b/include/spline/bezier_curve.h index 31bca58..0e8b43e 100644 --- a/include/spline/bezier_curve.h +++ b/include/spline/bezier_curve.h @@ -179,6 +179,11 @@ struct bezier_curve : public curve_abc<Time, Numeric, Dim, Safe, Point> return res; } + const t_point_t& waypoints() const + { + return pts_; + } + /*Operations*/ /*Helpers*/ diff --git a/python/spline_python.cpp b/python/spline_python.cpp index f5f0332..b4a163b 100644 --- a/python/spline_python.cpp +++ b/python/spline_python.cpp @@ -98,6 +98,19 @@ t_waypoint_t getWayPoints(const coeff_t& array, const time_waypoints_t& time_wp) return res; } +template <typename BezierType, int dim> +Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> wayPointsToList(const BezierType& self) +{ + typedef typename BezierType::t_point_t t_point; + typedef typename BezierType::t_point_t::const_iterator cit_point; + const t_point& wps = self.waypoints(); + Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> res (dim, wps.size()); + int col = 0; + for(cit_point cit = wps.begin(); cit != wps.end(); ++cit, ++col) + res.block<dim,1>(0,col) = *cit; + return res; +} + exact_cubic_t* wrapExactCubicConstructor(const coeff_t& array, const time_waypoints_t& time_wp) { t_waypoint_t wps = getWayPoints(array, time_wp); @@ -186,6 +199,7 @@ BOOST_PYTHON_MODULE(spline) .def("derivate", &bezier6_t::derivate) .def("compute_derivate", &bezier6_t::compute_derivate) .def("compute_primitive", &bezier6_t::compute_primitive) + .def("waypoints", &wayPointsToList<bezier6_t,6>) ; /** END bezier curve**/ @@ -200,6 +214,7 @@ BOOST_PYTHON_MODULE(spline) .def("derivate", &bezier_t::derivate) .def("compute_derivate", &bezier_t::compute_derivate) .def("compute_primitive", &bezier_t::compute_primitive) + .def("waypoints", &wayPointsToList<bezier_t,3>) ; /** END bezier curve**/ -- GitLab