16 #ifndef BT_JACOBIAN_ENTRY_H
17 #define BT_JACOBIAN_ENTRY_H
44 :m_linearJointAxis(jointAxis)
46 m_aJ = world2A*(rel_pos1.
cross(m_linearJointAxis));
47 m_bJ = world2B*(rel_pos2.
cross(-m_linearJointAxis));
48 m_0MinvJt = inertiaInvA * m_aJ;
49 m_1MinvJt = inertiaInvB * m_bJ;
50 m_Adiag = massInvA + m_0MinvJt.
dot(m_aJ) + massInvB + m_1MinvJt.dot(m_bJ);
63 m_aJ= world2A*jointAxis;
64 m_bJ = world2B*-jointAxis;
65 m_0MinvJt = inertiaInvA * m_aJ;
66 m_1MinvJt = inertiaInvB * m_bJ;
67 m_Adiag = m_0MinvJt.
dot(m_aJ) + m_1MinvJt.dot(m_bJ);
81 m_0MinvJt = inertiaInvA * m_aJ;
82 m_1MinvJt = inertiaInvB * m_bJ;
83 m_Adiag = m_0MinvJt.
dot(m_aJ) + m_1MinvJt.dot(m_bJ);
95 :m_linearJointAxis(jointAxis)
97 m_aJ= world2A*(rel_pos1.
cross(jointAxis));
98 m_bJ = world2A*(rel_pos2.
cross(-jointAxis));
99 m_0MinvJt = inertiaInvA * m_aJ;
101 m_Adiag = massInvA + m_0MinvJt.dot(m_aJ);
129 return sum[0]+sum[1]+sum[2];
137 linrel *= m_linearJointAxis;
140 btScalar rel_vel2 = angvela[0]+angvela[1]+angvela[2];
155 #endif //BT_JACOBIAN_ENTRY_H
static T sum(const btAlignedObjectArray< T > &items)
Jacobian entry is an abstraction that allows to describe constraints it can be used in combination wi...
btJacobianEntry(const btVector3 &jointAxis, const btMatrix3x3 &world2A, const btMatrix3x3 &world2B, const btVector3 &inertiaInvA, const btVector3 &inertiaInvB)
btScalar dot(const btVector3 &v) const
Return the dot product.
btScalar getNonDiagonal(const btJacobianEntry &jacB, const btScalar massInvA) const
btVector3 m_linearJointAxis
btJacobianEntry(const btMatrix3x3 &world2A, const btMatrix3x3 &world2B, const btVector3 &rel_pos1, const btVector3 &rel_pos2, const btVector3 &jointAxis, const btVector3 &inertiaInvA, const btScalar massInvA, const btVector3 &inertiaInvB, const btScalar massInvB)
btScalar getDiagonal() const
btVector3 cross(const btVector3 &v) const
Return the cross product between this and another vector.
btVector3 can be used to represent 3D points and vectors.
#define ATTRIBUTE_ALIGNED16(a)
btScalar getRelativeVelocity(const btVector3 &linvelA, const btVector3 &angvelA, const btVector3 &linvelB, const btVector3 &angvelB)
btScalar getNonDiagonal(const btJacobianEntry &jacB, const btScalar massInvA, const btScalar massInvB) const
btJacobianEntry(const btMatrix3x3 &world2A, const btVector3 &rel_pos1, const btVector3 &rel_pos2, const btVector3 &jointAxis, const btVector3 &inertiaInvA, const btScalar massInvA)
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btJacobianEntry(const btVector3 &axisInA, const btVector3 &axisInB, const btVector3 &inertiaInvA, const btVector3 &inertiaInvB)