22 typedef Eigen::Matrix<double, 3, 1> Vector3;
24 template<
typename V3_in,
typename V3_out>
26 cross(
const Eigen::MatrixBase<V3_in> &
vin,
const Eigen::MatrixBase<V3_out> &
vout);
29 static typename PINOCCHIO_EIGEN_PLAIN_TYPE(
V3)
cross(
const Eigen::MatrixBase<V3> &
vin)
31 typename PINOCCHIO_EIGEN_PLAIN_TYPE(
V3) res;
36 template<
typename Scalar,
typename V3_in,
typename V3_out>
37 inline static void alphaCross(
39 const Eigen::MatrixBase<V3_in> &
vin,
40 const Eigen::MatrixBase<V3_out> &
vout);
42 template<
typename Scalar,
typename V3>
43 static typename PINOCCHIO_EIGEN_PLAIN_TYPE(
V3)
44 alphaCross(
const Scalar &
s,
const Eigen::MatrixBase<V3> &
vin)
46 typename PINOCCHIO_EIGEN_PLAIN_TYPE(
V3) res;
47 alphaCross(
s,
vin, res);
51 template<
typename Scalar>
52 Eigen::Matrix<Scalar, dim, 1> operator*(
const Scalar &
s)
const
54 typedef Eigen::Matrix<Scalar, dim, 1> ReturnType;
56 for (Eigen::DenseIndex
i = 0;
i < dim; ++
i)
57 res[
i] =
i == axis ?
s : Scalar(0);
62 template<
typename Scalar>
63 friend inline Eigen::Matrix<Scalar, dim, 1> operator*(
const Scalar &
s,
const CartesianAxis &)
68 template<
typename Vector3Like>
69 static void setTo(
const Eigen::MatrixBase<Vector3Like>
v3)
71 Vector3Like &
v3_ = PINOCCHIO_EIGEN_CONST_CAST(Vector3Like,
v3);
72 typedef typename Vector3Like::Scalar Scalar;
74 for (Eigen::DenseIndex
i = 0;
i < dim; ++
i)
75 v3_[
i] =
i == axis ? Scalar(1) : Scalar(0);
78 template<
typename Scalar>
79 static Eigen::Matrix<Scalar, 3, 1> vector()
81 typedef Eigen::Matrix<Scalar, 3, 1> Vector3;
82 return Vector3::Unit(axis);
85 static Vector3 vector()
void cross(const Eigen::MatrixBase< Vector3 > &v, const Eigen::MatrixBase< Matrix3xIn > &Min, const Eigen::MatrixBase< Matrix3xOut > &Mout)
Applies the cross product onto the columns of M.