group_flavor in internal::LieGroup template

release/4.3a0
Mike Bosse 2014-12-15 23:48:30 +01:00
parent 79ea949df9
commit 3dc9a7c852
5 changed files with 7 additions and 5 deletions

View File

@ -117,10 +117,12 @@ struct Manifold {
/// A helper that implements the traits interface for GTSAM lie groups.
/// To use this for your gtsam type, define:
/// template<> struct traits<Type> : public LieGroup<Type> { };
template<typename ManifoldType>
template<typename ManifoldType,typename _group_flavor = additive_group_tag>
struct LieGroup {
// Typedefs required by all manifold types.
typedef lie_group_tag structure_category;
typedef _group_flavor group_flavor;
enum { dimension = ManifoldType::dimension };
typedef Eigen::Matrix<double, dimension, 1> TangentVector;
typedef OptionalJacobian<dimension, dimension> ChartJacobian;

View File

@ -304,7 +304,7 @@ typedef std::pair<Point2,Point2> Point2Pair;
GTSAM_EXPORT boost::optional<Pose2> align(const std::vector<Point2Pair>& pairs);
template<>
struct traits_x<Pose2> : public internal::LieGroup<Pose2> {};
struct traits_x<Pose2> : public internal::LieGroup<Pose2, multiplicative_group_tag> {};
} // namespace gtsam

View File

@ -363,6 +363,6 @@ typedef std::pair<Point3, Point3> Point3Pair;
GTSAM_EXPORT boost::optional<Pose3> align(const std::vector<Point3Pair>& pairs);
template<>
struct traits_x<Pose3> : public internal::LieGroup<Pose3> {};
struct traits_x<Pose3> : public internal::LieGroup<Pose3, multiplicative_group_tag> {};
} // namespace gtsam

View File

@ -242,6 +242,6 @@ namespace gtsam {
};
template<>
struct traits_x<Rot2> : public internal::LieGroup<Rot2> {};
struct traits_x<Rot2> : public internal::LieGroup<Rot2, multiplicative_group_tag> {};
} // gtsam

View File

@ -473,6 +473,6 @@ namespace gtsam {
GTSAM_EXPORT std::pair<Matrix3,Vector3> RQ(const Matrix3& A);
template<>
struct traits_x<Rot3> : public internal::LieGroup<Rot3> {};
struct traits_x<Rot3> : public internal::LieGroup<Rot3, multiplicative_group_tag> {};
}