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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user