diff --git a/src/narrowphase/gjk_libccd.cpp b/src/narrowphase/gjk_libccd.cpp index 0d76b060fb4a7c7dcbc8a792b54987d269454dba..145e3a5b168d61e074957b4a32431ea45a1c754a 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);