diff --git a/gtsam/geometry/Cyclic.h b/gtsam/geometry/Cyclic.h index cef085374..6b9820852 100644 --- a/gtsam/geometry/Cyclic.h +++ b/gtsam/geometry/Cyclic.h @@ -62,7 +62,9 @@ public: }; -GTSAM_ADDITIVE_GROUP1(size_t, N, Cyclic) +#define CYCLIC_TEMPLATE size_t N +#define CYCLIC_TYPE Cyclic +GTSAM_ADDITIVE_GROUP(CYCLIC_TEMPLATE, CYCLIC_TYPE) /// Define cyclic group to be a model of the Group concept namespace traits { diff --git a/gtsam/geometry/Quaternion.h b/gtsam/geometry/Quaternion.h index 79e71da3b..a96cd6ef0 100644 --- a/gtsam/geometry/Quaternion.h +++ b/gtsam/geometry/Quaternion.h @@ -76,17 +76,13 @@ struct QuaternionChart { } }; -#define GTSAM_MANIFOLD2(T1,A1,T2,A2,MANIFOLD,DIM,SCALAR,OPTIONS,CHART) \ -namespace manifold { \ -namespace traits { \ -template struct dimension > : public boost::integral_constant {};\ -template struct TangentVector > { typedef Eigen::Matrix type;};\ -template struct DefaultChart > { typedef CHART type;};\ -}} +#define QUATERNION_TEMPLATE typename _Scalar, int _Options +#define QUATERNION_TYPE Eigen::Quaternion<_Scalar,_Options> +GTSAM_MULTIPLICATIVE_GROUP(QUATERNION_TEMPLATE, QUATERNION_TYPE) - -GTSAM_MANIFOLD2(typename, _Scalar, int, _Options, Eigen::Quaternion, 3, _Scalar, _Options, QuaternionChart) -GTSAM_MULTIPLICATIVE_GROUP2(typename, _Scalar, int, _Options, Eigen::Quaternion) +#define QUATERNION_TANGENT Eigen::Matrix<_Scalar, 3, 1, _Options, 3, 1> +#define QUATERNION_CHART QuaternionChart<_Scalar,_Options> +GTSAM_MANIFOLD(QUATERNION_TEMPLATE,QUATERNION_TYPE,3,QUATERNION_TANGENT,QUATERNION_CHART) /// Define Eigen::Quaternion to be a model of the Lie Group concept namespace traits {