Refactor for readability

release/4.3a0
dellaert 2014-12-07 10:20:54 +01:00
parent 3a6b89e840
commit 187760ce95
1 changed files with 19 additions and 23 deletions

View File

@ -21,52 +21,48 @@ namespace gtsam {
namespace traits { namespace traits {
/// Define Eigen::Quaternion to be a model of the Group concept /// Define Eigen::Quaternion to be a model of the Group concept
template<typename _Scalar, int _Options> template<typename S, int O>
struct structure_category<Eigen::Quaternion<_Scalar, _Options> > { struct structure_category<Eigen::Quaternion<S, O> > {
typedef group_tag type; typedef group_tag type;
}; };
} // \namespace gtsam::traits } // \namespace gtsam::traits
namespace group { namespace group {
template<typename _Scalar, int _Options> template<typename S, int O>
Eigen::Quaternion<_Scalar, _Options> compose( Eigen::Quaternion<S, O> compose(const Eigen::Quaternion<S, O> &g,
const Eigen::Quaternion<_Scalar, _Options> &g, const Eigen::Quaternion<S, O> & h) {
const Eigen::Quaternion<_Scalar, _Options> & h) {
return g * h; return g * h;
} }
template<typename _Scalar, int _Options> template<typename S, int O>
Eigen::Quaternion<_Scalar, _Options> between( Eigen::Quaternion<S, O> between(const Eigen::Quaternion<S, O> &g,
const Eigen::Quaternion<_Scalar, _Options> &g, const Eigen::Quaternion<S, O> & h) {
const Eigen::Quaternion<_Scalar, _Options> & h) {
return g.inverse() * h; return g.inverse() * h;
} }
template<typename _Scalar, int _Options> template<typename S, int O>
Eigen::Quaternion<_Scalar, _Options> inverse( Eigen::Quaternion<S, O> inverse(const Eigen::Quaternion<S, O> &g) {
const Eigen::Quaternion<_Scalar, _Options> &g) {
return g.inverse(); return g.inverse();
} }
namespace traits { namespace traits {
/// Declare the trait that specifies a quaternion's identity element /// Declare the trait that specifies a quaternion's identity element
template<typename _Scalar, int _Options> template<typename S, int O>
struct identity<Eigen::Quaternion<_Scalar, _Options> > { struct identity<Eigen::Quaternion<S, O> > {
static const Eigen::Quaternion<_Scalar, _Options> value; static const Eigen::Quaternion<S, O> value;
typedef Eigen::Quaternion<_Scalar, _Options> value_type; typedef Eigen::Quaternion<S, O> value_type;
}; };
/// Out of line definition of identity /// Out of line definition of identity
template<typename _Scalar, int _Options> template<typename S, int O>
const Eigen::Quaternion<_Scalar, _Options> identity< const Eigen::Quaternion<S, O> identity<Eigen::Quaternion<S, O> >::value =
Eigen::Quaternion<_Scalar, _Options> >::value = Eigen::Quaternion<_Scalar, Eigen::Quaternion<S, O>::Identity();
_Options>::Identity();
/// Define the trait that asserts quaternions are a multiplicative group /// Define the trait that asserts quaternions are a multiplicative group
template<typename _Scalar, int _Options> template<typename S, int O>
struct flavor<Eigen::Quaternion<_Scalar, _Options> > { struct flavor<Eigen::Quaternion<S, O> > {
typedef multiplicative_tag type; typedef multiplicative_tag type;
}; };