6#include <Eigen/Geometry>
8#include "detail/galilei.hpp"
9#include "detail/macro.hpp"
10#include "lie_group_base.hpp"
62template<
typename _Derived>
71 SMOOTH_INHERIT_TYPEDEFS;
90 Eigen::Map<Eigen::Vector3<Scalar>>
r3_v()
93 return Eigen::Map<Eigen::Vector3<Scalar>>(
static_cast<_Derived &
>(*this).data() + 0);
99 Eigen::Map<const Eigen::Vector3<Scalar>>
r3_v()
const
101 return Eigen::Map<const Eigen::Vector3<Scalar>>(
static_cast<const _Derived &
>(*this).data() + 0);
107 Eigen::Map<Eigen::Vector3<Scalar>>
r3_p()
110 return Eigen::Map<Eigen::Vector3<Scalar>>(
static_cast<_Derived &
>(*this).data() + 3);
116 Eigen::Map<const Eigen::Vector3<Scalar>>
r3_p()
const
118 return Eigen::Map<const Eigen::Vector3<Scalar>>(
static_cast<const _Derived &
>(*this).data() + 3);
124 Eigen::Map<Eigen::Vector<Scalar, 1>>
r1_t()
127 return Eigen::Map<Eigen::Vector<Scalar, 1>>(
static_cast<_Derived &
>(*this).data() + 6);
133 Eigen::Map<const Eigen::Vector<Scalar, 1>>
r1_t()
const
135 return Eigen::Map<const Eigen::Vector<Scalar, 1>>(
static_cast<const _Derived &
>(*this).data() + 6);
143 template<
typename EigenDerived>
144 Eigen::Vector4<Scalar>
operator*(
const Eigen::MatrixBase<EigenDerived> &
v)
const
146 Eigen::Vector4<Scalar>
ret;
159 template<
typename EigenDerived>
160 Eigen::Matrix<Scalar, 4, 10>
dr_action(
const Eigen::MatrixBase<EigenDerived> &
v)
const
162 Eigen::Matrix<Scalar, 4, 10>
ret = Eigen::Matrix<Scalar, 4, 10>::Zero();
178template<
typename _Scalar>
183template<
typename _Scalar>
186 static constexpr bool is_mutable =
true;
188 using Impl = GalileiImpl<_Scalar>;
191 template<
typename NewScalar>
201template<
typename _Scalar>
217 template<
typename SO3Derived,
typename T1,
typename T2>
220 const Eigen::MatrixBase<T1> &
r3_v,
221 const Eigen::MatrixBase<T2> &
r3_p,
232template<
typename _Scalar>
242template<
typename _Scalar>
251template<
typename _Scalar>
254 static constexpr bool is_mutable =
false;
263template<
typename _Scalar>
268 SMOOTH_CONST_MAP_API();
Base class for Galielei Lie group types.
Eigen::Map< Eigen::Vector< Scalar, 1 > > r1_t()
Access R1 time part.
Eigen::Map< Eigen::Vector3< Scalar > > r3_v()
Access R3 velocity part.
Eigen::Map< const Eigen::Vector< Scalar, 1 > > r1_t() const
Const access R1 time part.
Map< SO3< Scalar > > so3()
Access SO(3) part.
Map< const SO3< Scalar > > so3() const
Const access SO(3) part.
Eigen::Map< Eigen::Vector3< Scalar > > r3_p()
Access R3 position part.
Eigen::Map< const Eigen::Vector3< Scalar > > r3_v() const
Const access R3 velocity part.
Eigen::Vector4< Scalar > operator*(const Eigen::MatrixBase< EigenDerived > &v) const
Tranformation action on (x, y, z, t) space-time vector.
Eigen::Map< const Eigen::Vector3< Scalar > > r3_p() const
Const access R3 position part.
Eigen::Matrix< Scalar, 4, 10 > dr_action(const Eigen::MatrixBase< EigenDerived > &v) const
Jacobian of rotation action w.r.t. group.
Storage implementation of Galilei Lie group.
Galilei(const SO3Base< SO3Derived > &so3, const Eigen::MatrixBase< T1 > &r3_v, const Eigen::MatrixBase< T2 > &r3_p, double r1_t=0)
Construct from SO3 and translation.
Base class for Lie group types.
static constexpr bool is_mutable
True if underlying storage supports modification.
Eigen::Matrix< Scalar, Dim, Dim > Matrix
Lie group matrix type.
Memory mapping of internal Lie group types.
typename traits::man< M >::Scalar Scalar
Manifold scalar type.
typename traits::man< M >::PlainObject PlainObject
Manifold default type.
Type trait that maps a type to Lie group operations.