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