Refactor for readability
parent
3a6b89e840
commit
187760ce95
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue