make btTransform::getIdentity a static const reference, returning a static, and add getIdentity to btMatrix3x3 and btQuaternion class

Thanks to ejtttje and martijn for the suggestions:
http://code.google.com/p/bullet/issues/detail?id=139
This commit is contained in:
erwin.coumans
2009-02-06 19:30:50 +00:00
parent 41af960e7a
commit 0a94209df1
3 changed files with 18 additions and 4 deletions

View File

@@ -192,6 +192,15 @@ class btMatrix3x3 {
btScalar(0.0), btScalar(1.0), btScalar(0.0), btScalar(0.0), btScalar(1.0), btScalar(0.0),
btScalar(0.0), btScalar(0.0), btScalar(1.0)); btScalar(0.0), btScalar(0.0), btScalar(1.0));
} }
static const btMatrix3x3& getIdentity()
{
static const btMatrix3x3 identityMatrix(btScalar(1.0), btScalar(0.0), btScalar(0.0),
btScalar(0.0), btScalar(1.0), btScalar(0.0),
btScalar(0.0), btScalar(0.0), btScalar(1.0));
return identityMatrix;
}
/**@brief Fill the values of the matrix into a 9 element array /**@brief Fill the values of the matrix into a 9 element array
* @param m The array to be filled */ * @param m The array to be filled */
void getOpenGLSubMatrix(btScalar *m) const void getOpenGLSubMatrix(btScalar *m) const

View File

@@ -275,6 +275,12 @@ public:
} }
} }
static const btQuaternion& getIdentity()
{
static const btQuaternion identityQuat(btScalar(0.),btScalar(0.),btScalar(0.),btScalar(1.));
return identityQuat;
}
SIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; } SIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; }

View File

@@ -190,11 +190,10 @@ public:
btTransform operator*(const btTransform& t) const; btTransform operator*(const btTransform& t) const;
/**@brief Return an identity transform */ /**@brief Return an identity transform */
static btTransform getIdentity() static const btTransform& getIdentity()
{ {
btTransform tr; static const btTransform identityTransform(btMatrix3x3::getIdentity());
tr.setIdentity(); return identityTransform;
return tr;
} }
private: private: