Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
16 #ifndef BT_SOLVER_BODY_H
17 #define BT_SOLVER_BODY_H
40 : m_vec128(_mm_set1_ps(fl))
88 return btSimdScalar(_mm_mul_ps(v1.get128(), v2.get128()));
95 return btSimdScalar(_mm_add_ps(v1.get128(), v2.get128()));
99 #define btSimdScalar btScalar
123 m_worldTransform = worldTransform;
128 return m_worldTransform;
134 velocity = m_linearVelocity + m_externalForceImpulse + (m_angularVelocity + m_externalTorqueImpulse).cross(rel_pos);
142 velocity = m_linearVelocity + m_deltaLinearVelocity + (m_angularVelocity + m_deltaAngularVelocity).cross(rel_pos);
150 angVel = m_angularVelocity + m_deltaAngularVelocity;
160 m_deltaLinearVelocity += linearComponent * impulseMagnitude * m_linearFactor;
161 m_deltaAngularVelocity += angularComponent * (impulseMagnitude * m_angularFactor);
169 m_pushVelocity += linearComponent * impulseMagnitude * m_linearFactor;
170 m_turnVelocity += angularComponent * (impulseMagnitude * m_angularFactor);
176 return m_deltaLinearVelocity;
181 return m_deltaAngularVelocity;
186 return m_pushVelocity;
191 return m_turnVelocity;
199 return m_deltaLinearVelocity;
204 return m_deltaAngularVelocity;
209 return m_angularFactor;
224 return m_pushVelocity;
229 return m_turnVelocity;
234 velocity = m_linearVelocity + m_deltaLinearVelocity + (m_angularVelocity + m_deltaAngularVelocity).cross(rel_pos);
239 angVel = m_angularVelocity + m_deltaAngularVelocity;
247 m_deltaLinearVelocity += linearComponent * impulseMagnitude * m_linearFactor;
248 m_deltaAngularVelocity += angularComponent * (impulseMagnitude * m_angularFactor);
256 m_linearVelocity += m_deltaLinearVelocity;
257 m_angularVelocity += m_deltaAngularVelocity;
268 m_linearVelocity += m_deltaLinearVelocity;
269 m_angularVelocity += m_deltaAngularVelocity;
273 if (m_pushVelocity[0] != 0.f || m_pushVelocity[1] != 0 || m_pushVelocity[2] != 0 || m_turnVelocity[0] != 0.f || m_turnVelocity[1] != 0 || m_turnVelocity[2] != 0)
277 m_worldTransform = newTransform;
285 #endif //BT_SOLVER_BODY_H
void getAngularVelocity(btVector3 &angVel) const
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
btRigidBody * m_originalBody
The btRigidBody is the main class for rigid body objects.
void internalSetInvMass(const btVector3 &invMass)
btVector3 m_linearVelocity
const btVector3 & internalGetInvMass() const
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
const btVector3 & getPushVelocity() const
btVector3 & internalGetTurnVelocity()
void internalGetAngularVelocity(btVector3 &angVel) const
btVector3 m_externalForceImpulse
btMatrix3x3 operator*(const btMatrix3x3 &m, const btScalar &k)
void internalApplyImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, const btScalar impulseMagnitude)
const btVector3 & getTurnVelocity() const
btVector3 m_angularFactor
btVector3 m_angularVelocity
void internalGetVelocityInLocalPointObsolete(const btVector3 &rel_pos, btVector3 &velocity) const
#define btSimdScalar
Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later,...
void applyImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, const btScalar impulseMagnitude)
void internalApplyPushImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, btScalar impulseMagnitude)
void writebackVelocityAndTransform(btScalar timeStep, btScalar splitImpulseTurnErp)
btMatrix3x3 operator+(const btMatrix3x3 &m1, const btMatrix3x3 &m2)
btVector3 & internalGetDeltaAngularVelocity()
#define BT_DECLARE_ALIGNED_ALLOCATOR()
void getVelocityInLocalPointNoDelta(const btVector3 &rel_pos, btVector3 &velocity) const
btVector3 & internalGetPushVelocity()
btVector3 & internalGetDeltaLinearVelocity()
some internal methods, don't use them
btVector3 can be used to represent 3D points and vectors.
btVector3 m_deltaAngularVelocity
#define ATTRIBUTE_ALIGNED16(a)
void getVelocityInLocalPointObsolete(const btVector3 &rel_pos, btVector3 &velocity) const
btVector3 m_externalTorqueImpulse
#define SIMD_FORCE_INLINE
btVector3 m_deltaLinearVelocity
const btTransform & getWorldTransform() const
const btVector3 & getDeltaLinearVelocity() const
void setWorldTransform(const btTransform &worldTransform)
btTransform m_worldTransform
const btVector3 & internalGetAngularFactor() const
const btVector3 & getDeltaAngularVelocity() const