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