From 5a906e093c2a72f8e21a3467741f68e35b6955d4 Mon Sep 17 00:00:00 2001
From: Guilhem Saurel <guilhem.saurel@gmail.com>
Date: Thu, 10 Jan 2019 15:51:42 +0100
Subject: [PATCH] Revert "[OBB] Simplify expression in
 obbDisjointAndLowerBoundDistance.", fix #46

This reverts commit 31e52cc90748f2a2b80232682ec2214fb71f140d.
---
 src/BV/OBB.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/BV/OBB.cpp b/src/BV/OBB.cpp
index 8e0fdcc3..b462aaff 100644
--- a/src/BV/OBB.cpp
+++ b/src/BV/OBB.cpp
@@ -314,13 +314,18 @@ bool obbDisjointAndLowerBoundDistance (const Matrix3f& B, const Vec3f& T,
 
   // Corner of b axis aligned bounding box the closest to the origin
   Vec3f AABB_corner (T.cwiseAbs () - Bf * b);
-  squaredLowerBoundDistance = (AABB_corner - a).cwiseMax (0).squaredNorm ();
+  Vec3f diff3 (AABB_corner - a);
+  diff3 = diff3.cwiseMax (0);
+  //for (Vec3f::Index i=0; i<3; ++i) diff3 [i] = std::max (0, diff3 [i]);
+  squaredLowerBoundDistance = diff3.squaredNorm ();
   if (squaredLowerBoundDistance > breakDistance2)
     return true;
 
   AABB_corner = (B.transpose () * T).cwiseAbs ()  - Bf.transpose () * a;
-  // | B^T T| - b - Bf^T a
-  squaredLowerBoundDistance = (AABB_corner - b).cwiseMax (0).squaredNorm ();
+  // diff3 = | B^T T| - b - Bf^T a
+  diff3 = AABB_corner - b;
+  diff3 = diff3.cwiseMax (0);
+  squaredLowerBoundDistance = diff3.squaredNorm ();
 
   if (squaredLowerBoundDistance > breakDistance2)
     return true;
-- 
GitLab