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];
|
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();
|
||||||
const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst;
|
if (l.m_c1+len > SIMD_EPSILON)
|
||||||
//const btScalar t=k*a.m_im;
|
{
|
||||||
a.m_x-=del*(k*a.m_im);
|
const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst;
|
||||||
b.m_x+=del*(k*b.m_im);
|
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 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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user