From de6ee5bc745f184edd6253a1f5aac6d833a5997b Mon Sep 17 00:00:00 2001 From: Justin Carpentier <justin.carpentier@inria.fr> Date: Fri, 8 Nov 2019 15:33:24 +0100 Subject: [PATCH] geometry: fix operator== --- include/eigenpy/angle-axis.hpp | 3 ++- include/eigenpy/quaternion.hpp | 4 ++-- unittest/python/test_geometry.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/eigenpy/angle-axis.hpp b/include/eigenpy/angle-axis.hpp index a9accb94..abf2b0c3 100644 --- a/include/eigenpy/angle-axis.hpp +++ b/include/eigenpy/angle-axis.hpp @@ -98,7 +98,8 @@ namespace eigenpy { self.angle() = angle; } static bool __eq__(const AngleAxis & u, const AngleAxis & v) - { return u.isApprox(v); } + { return u.axis() == v.axis() && v.angle() == u.angle(); } + static bool __ne__(const AngleAxis & u, const AngleAxis & v) { return !__eq__(u,v); } diff --git a/include/eigenpy/quaternion.hpp b/include/eigenpy/quaternion.hpp index e0cd3e62..38f1cb87 100644 --- a/include/eigenpy/quaternion.hpp +++ b/include/eigenpy/quaternion.hpp @@ -178,9 +178,9 @@ namespace eigenpy return self.isApprox(other,prec); } - static bool __eq__(const Quaternion& u, const Quaternion& v) + static bool __eq__(const Quaternion & u, const Quaternion & v) { - return u.isApprox(v,1e-9); + return u.coeffs() == v.coeffs(); } static bool __ne__(const Quaternion& u, const Quaternion& v) diff --git a/unittest/python/test_geometry.py b/unittest/python/test_geometry.py index 07d91a33..b507dae5 100644 --- a/unittest/python/test_geometry.py +++ b/unittest/python/test_geometry.py @@ -20,7 +20,7 @@ assert(isapprox(np.linalg.norm(q.coeffs()),1)) r = AngleAxis(q) q2 = Quaternion(r) -assert(q==q2) +assert(q==q) assert(isapprox(q.coeffs(),q2.coeffs())) Rq = q.matrix() @@ -29,7 +29,7 @@ assert(isapprox(Rq*Rq.T,np.eye(3))) assert(isapprox(Rr,Rq)) qR = Quaternion(Rr) -assert(q==qR) +assert(q.isApprox(qR)) assert(isapprox(q.coeffs(),qR.coeffs())) assert(isapprox(qR[3],1./np.sqrt(30))) -- GitLab