python_definitions.h
Go to the documentation of this file.
1 #include "curves/fwd.h"
2 #include "curves/bezier_curve.h"
3 #include "curves/polynomial.h"
6 
7 #include <vector>
8 
9 #ifndef _DEFINITION_PYTHON_BINDINGS
10 #define _DEFINITION_PYTHON_BINDINGS
11 
12 namespace curves {
13 /*** TEMPLATE SPECIALIZATION FOR PYTHON ****/
14 typedef double real;
15 typedef std::vector<real> t_time_t;
16 typedef Eigen::VectorXd time_waypoints_t;
17 
18 typedef Eigen::Matrix<double, Eigen::Dynamic, 1, 0, Eigen::Dynamic, 1> ret_pointX_t;
19 typedef std::pair<pointX_t, pointX_t> pair_pointX_tangent_t;
20 typedef Eigen::MatrixXd pointX_list_t;
21 typedef std::vector<pair_pointX_tangent_t, Eigen::aligned_allocator<pair_pointX_tangent_t> > t_pair_pointX_tangent_t;
24 typedef std::pair<real, pointX_t> waypoint_t;
25 typedef std::vector<waypoint_t> t_waypoint_t;
26 typedef Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> point_listX_t;
27 typedef Eigen::Matrix<real, 3, Eigen::Dynamic> point_list3_t;
28 typedef Eigen::Matrix<real, 6, Eigen::Dynamic> point_list6_t;
30 
32 
33 template <typename PointList, typename T_Point>
34 T_Point vectorFromEigenArray(const PointList& array) {
35  T_Point res;
36  for (int i = 0; i < array.cols(); ++i) {
37  res.push_back(array.col(i));
38  }
39  return res;
40 }
41 template <typename PointList, typename T_Point>
42 T_Point vectorFromEigenVector(const PointList& vector) {
43  T_Point res;
44  for (int i = 0; i < vector.rows(); ++i) {
45  res.push_back(vector[i]);
46  }
47  return res;
48 }
49 
50 template <typename T_point, typename PointList>
51 PointList vectorToEigenArray(const T_point& vect) {
52  const size_t nCols = vect.size();
53  const size_t nRows = vect[0].rows();
54  PointList res(nRows,nCols);
55  for (size_t i = 0; i < vect.size(); ++i) {
56  res.block(0,i,nRows,1) = vect[i];
57  }
58  return res;
59 }
60 } // namespace curves
61 #endif //_DEFINITION_PYTHON_BINDINGS
Eigen::Matrix< real, Eigen::Dynamic, Eigen::Dynamic > point_listX_t
Definition: python_definitions.h:26
polynomial_t::coeff_t coeff_t
Definition: python_definitions.h:29
std::pair< real, pointX_t > waypoint_t
Definition: python_definitions.h:24
T_Point vectorFromEigenVector(const PointList &vector)
Definition: python_definitions.h:42
std::pair< pointX_t, pointX_t > pair_pointX_tangent_t
Definition: python_definitions.h:19
Definition of a cubic spline.
Definition: curve_constraint.h:21
forward declaration of all curves class
Definition: bernstein.h:20
std::vector< Point, Eigen::aligned_allocator< Point > > T_Point
Definition: effector_spline.h:29
Eigen::MatrixXd pointX_list_t
Definition: python_definitions.h:20
class allowing to create a Bezier curve of dimension 1 <= n <= 3.
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, Eigen::Dynamic, 1 > ret_pointX_t
Definition: python_definitions.h:18
T_Point vectorFromEigenArray(const PointList &array)
Definition: python_definitions.h:34
std::vector< real > t_time_t
Definition: python_definitions.h:15
Eigen::MatrixXd coeff_t
Definition: polynomial.h:41
Eigen::Matrix< real, 3, Eigen::Dynamic > point_list3_t
Definition: python_definitions.h:27
curves::Bern< double > bernstein_t
Definition: python_definitions.h:31
curves::curve_constraints< pointX_t > curve_constraints_t
Definition: python_definitions.h:22
Eigen::VectorXd time_waypoints_t
Definition: python_definitions.h:16
PointList vectorToEigenArray(const T_point &vect)
Definition: python_definitions.h:51
std::vector< pair_pointX_tangent_t, Eigen::aligned_allocator< pair_pointX_tangent_t > > t_pair_pointX_tangent_t
Definition: python_definitions.h:21
curves::curve_constraints< point3_t > curve_constraints3_t
Definition: python_definitions.h:23
storage for variable points of the form p_i = x&#39; A_i x + B_i x + c_i
Eigen::Matrix< real, 6, Eigen::Dynamic > point_list6_t
Definition: python_definitions.h:28
Definition: fwd.h:49
storage for variable points of the form p_i = B_i x + c_i
std::vector< waypoint_t > t_waypoint_t
Definition: python_definitions.h:25
double real
Definition: python_definitions.h:14