From 2f57a4e43fb60df262cdbd641f507a59e56859cc Mon Sep 17 00:00:00 2001
From: Florent Lamiraux <florent@laas.fr>
Date: Fri, 30 May 2014 22:24:34 +0200
Subject: [PATCH] Fix bug in capsule support function.

  - do not assume that input vector dir is normalized.
---
 src/narrowphase/gjk_libccd.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/narrowphase/gjk_libccd.cpp b/src/narrowphase/gjk_libccd.cpp
index 0d76b060..145e3a5b 100644
--- a/src/narrowphase/gjk_libccd.cpp
+++ b/src/narrowphase/gjk_libccd.cpp
@@ -579,11 +579,12 @@ static void supportCap(const void* obj, const ccd_vec3_t* dir_, ccd_vec3_t* v)
   ccdVec3Set(&pos2, CCD_ZERO, CCD_ZERO, -o->height);
 
   ccdVec3Copy(v, &dir);
+  ccdVec3Normalize (v);
   ccdVec3Scale(v, o->radius);
   ccdVec3Add(&pos1, v);
   ccdVec3Add(&pos2, v);
 
-  if(ccdVec3Dot(&dir, &pos1) > ccdVec3Dot(&dir, &pos2))
+  if(ccdVec3Z (&dir) > 0)
     ccdVec3Copy(v, &pos1);
   else
     ccdVec3Copy(v, &pos2);
-- 
GitLab