apply fix for btAcosf/btAsinf (numerical issue causes values of X become slightly larger than 1 or smaller than -1, causing NaNs)

manually add some missing files to msvc projectfiles for now
fix in box-box collision detector, preventing it to fail in some rare cases
remove redundant line in btHingeConstraint, thanks to teravus
fix mouse drag camera rotation issue (modulo 360 instead of 180)
This commit is contained in:
erwin.coumans
2009-10-09 23:35:00 +00:00
parent 7b4bfcbcab
commit 703582f4fa
5 changed files with 27 additions and 8 deletions

View File

@@ -877,7 +877,7 @@ void DemoApplication::mouseMotionFunc(int x,int y)
else if(m_mouseButtons & 1)
{
m_azi += dx * 0.2;
m_azi = fmodf(m_azi, 180.f);
m_azi = fmodf(m_azi, 360.f);
m_ele += dy * 0.2;
m_ele = fmodf(m_ele, 180.f);
}

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
@@ -494,6 +494,22 @@
RelativePath="..\..\Demos\OpenGL\Win32DemoApplication.h">
</File>
</Filter>
<File
RelativePath="..\..\Demos\OpenGL\GL_DialogDynamicsWorld.cpp"
>
</File>
<File
RelativePath="..\..\Demos\OpenGL\GL_DialogDynamicsWorld.h"
>
</File>
<File
RelativePath="..\..\Demos\OpenGL\GL_DialogWindow.cpp"
>
</File>
<File
RelativePath="..\..\Demos\OpenGL\GL_DialogWindow.h"
>
</File>
</Files>
<Globals>
</Globals>

View File

@@ -333,9 +333,9 @@ int dBoxBox2 (const btVector3& p1, const dMatrix3 R1,
#undef TST
#define TST(expr1,expr2,n1,n2,n3,cc) \
s2 = btFabs(expr1) - (expr2); \
if (s2 > 0) return 0; \
if (s2 > SIMD_EPSILON) return 0; \
l = btSqrt((n1)*(n1) + (n2)*(n2) + (n3)*(n3)); \
if (l > 0) { \
if (l > SIMD_EPSILON) { \
s2 /= l; \
if (s2*fudge_factor > s) { \
s = s2; \

View File

@@ -222,7 +222,6 @@ void btHingeConstraint::buildJacobian()
btPlaneSpace1(m_rbAFrame.getBasis().getColumn(2),jointAxis0local,jointAxis1local);
getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2);
btVector3 jointAxis0 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis0local;
btVector3 jointAxis1 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis1local;
btVector3 hingeAxisWorld = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2);

View File

@@ -213,8 +213,8 @@ SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabs(x); }
SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cos(x); }
SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sin(x); }
SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tan(x); }
SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { return acos(x); }
SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { return asin(x); }
SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { if (x<btScalar(-1)) x=btScalar(-1); if (x>btScalar(1)) x=btScalar(1); return acos(x); }
SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { if (x<btScalar(-1)) x=btScalar(-1); if (x>btScalar(1)) x=btScalar(1); return asin(x); }
SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atan(x); }
SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2(x, y); }
SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return exp(x); }
@@ -250,9 +250,13 @@ SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sinf(x); }
SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tanf(x); }
SIMD_FORCE_INLINE btScalar btAcos(btScalar x) {
btAssert(x <= btScalar(1.));
if (x<btScalar(-1)) x=btScalar(-1); if (x>btScalar(1)) x=btScalar(1);
return acosf(x);
}
SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { return asinf(x); }
SIMD_FORCE_INLINE btScalar btAsin(btScalar x) {
if (x<btScalar(-1)) x=btScalar(-1); if (x>btScalar(1)) x=btScalar(1);
return asinf(x);
}
SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atanf(x); }
SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2f(x, y); }
SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return expf(x); }