Avoid division by zero in softbody constraint solving

Thanks majestik for reporting the issue and providing a patch, see Issue 469

Fix bug in findBinarySearch, luckily this method was not used yet.
Thanks snowcat for reporting a fix for this issue:
http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=6294
This commit is contained in:
erwin.coumans
2011-01-30 21:17:18 +00:00
parent b37edd81cd
commit cb497b88a6
2 changed files with 7 additions and 5 deletions

View File

@@ -2844,10 +2844,12 @@ void btSoftBody::PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti)
Node& b=*l.m_n[1];
const btVector3 del=b.m_x-a.m_x;
const btScalar len=del.length2();
const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst;
//const btScalar t=k*a.m_im;
a.m_x-=del*(k*a.m_im);
b.m_x+=del*(k*b.m_im);
if (l.m_c1+len > SIMD_EPSILON)
{
const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst;
a.m_x-=del*(k*a.m_im);
b.m_x+=del*(k*b.m_im);
}
}
}
}

View File

@@ -406,7 +406,7 @@ class btAlignedObjectArray
int findBinarySearch(const T& key) const
{
int first = 0;
int last = size();
int last = size()-1;
//assume sorted array
while (first <= last) {