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,12 +2844,14 @@ void btSoftBody::PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti)
Node& b=*l.m_n[1]; Node& b=*l.m_n[1];
const btVector3 del=b.m_x-a.m_x; const btVector3 del=b.m_x-a.m_x;
const btScalar len=del.length2(); const btScalar len=del.length2();
if (l.m_c1+len > SIMD_EPSILON)
{
const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst; 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); a.m_x-=del*(k*a.m_im);
b.m_x+=del*(k*b.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 findBinarySearch(const T& key) const
{ {
int first = 0; int first = 0;
int last = size(); int last = size()-1;
//assume sorted array //assume sorted array
while (first <= last) { while (first <= last) {