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