26 #ifndef MPBLOCKS_DUBINS_CURVES_EIGEN_FUNCS_H_
27 #define MPBLOCKS_DUBINS_CURVES_EIGEN_FUNCS_H_
29 #include <Eigen/Dense>
33 namespace curves_eigen {
37 template <
typename Scalar>
38 Eigen::Matrix<Scalar, 2, 1>
ccwCenter(
const Eigen::Matrix<Scalar, 3, 1>& q,
43 template <
typename Scalar>
44 Eigen::Matrix<Scalar, 2, 1>
leftCenter(
const Eigen::Matrix<Scalar, 3, 1>& q,
49 template <
typename Scalar>
50 Eigen::Matrix<Scalar, 2, 1>
cwCenter(
const Eigen::Matrix<Scalar, 3, 1>& q,
55 template <
typename Scalar>
56 Eigen::Matrix<Scalar, 2, 1>
rightCenter(
const Eigen::Matrix<Scalar, 3, 1>& q,
61 template <
typename Scalar>
66 template <
typename Scalar>
71 template <
typename Scalar>
76 template <
typename Scalar>
81 template <
typename Scalar>
82 Scalar
ccwAngleOf(
const Eigen::Matrix<Scalar, 3, 1>& q);
86 template <
typename Scalar>
87 Scalar
leftAngleOf(
const Eigen::Matrix<Scalar, 3, 1>& q);
91 template <
typename Scalar>
92 Scalar
cwAngleOf(
const Eigen::Matrix<Scalar, 3, 1>& q);
96 template <
typename Scalar>
97 Scalar
rightAngleOf(
const Eigen::Matrix<Scalar, 3, 1>& q);
101 template <
typename Scalar>
103 const Eigen::Matrix<Scalar, 2, 1>& c1,
104 Eigen::Matrix<Scalar, 2, 1>& c2, Scalar r, Scalar& a);
108 template <
typename Scalar>
110 const Eigen::Matrix<Scalar, 2, 1>& c1,
111 Eigen::Matrix<Scalar, 2, 1>& c2, Scalar r, Scalar& a);
bool coincidentCenterA(const Eigen::Matrix< Scalar, 2, 1 > &c0, const Eigen::Matrix< Scalar, 2, 1 > &c1, Eigen::Matrix< Scalar, 2, 1 > &c2, Scalar r, Scalar &a)
returns the center of a circle which is coincident to the two circles whose centers are given...
Scalar leftAngleOf(const Scalar q_theta)
return the angle of the vector from the center of the counter clockwise (left) circle coincident to q...
bool coincidentCenterB(const Eigen::Matrix< Scalar, 2, 1 > &c0, const Eigen::Matrix< Scalar, 2, 1 > &c1, Eigen::Matrix< Scalar, 2, 1 > &c2, Scalar r, Scalar &a)
returns the center of a circle which is coincident to the two circles whose centers are given...
Scalar ccwAngleOf(const Scalar q_theta)
return the angle of the vector from the center of the counter clockwise (left) circle coincident to q...
Eigen::Matrix< Scalar, 2, 1 > cwCenter(const Eigen::Matrix< Scalar, 3, 1 > &q, Scalar r)
return the center of a clockwise (right) circle coincident to q with radius r
Scalar cwAngleOf(const Scalar q_theta)
return the angle of the vector from the center of the clockwise (right) circle coincident to q...
Eigen::Matrix< Scalar, 2, 1 > ccwCenter(const Eigen::Matrix< Scalar, 3, 1 > &q, Scalar r)
return the center of a counter clockwise (left) circle coincident to q with radius r ...
Scalar rightAngleOf(const Scalar q_theta)
return the angle of the vector from the center of the clockwise (right) circle coincident to q...
Eigen::Matrix< Scalar, 2, 1 > rightCenter(const Eigen::Matrix< Scalar, 3, 1 > &q, Scalar r)
return the center of a clockwise (right) circle coincident to q with radius r
Eigen::Matrix< Scalar, 2, 1 > leftCenter(const Eigen::Matrix< Scalar, 3, 1 > &q, Scalar r)
return the center of a counter clockwise (left) circle coincident to q with radius r ...