Back to index

supertuxkart  0.5+dfsg1
Public Member Functions | Public Attributes
btJacobianEntry Class Reference

Jacobian entry is an abstraction that allows to describe constraints it can be used in combination with a constraint solver Can be used to relate the effect of an impulse to the constraint error. More...

#include <btJacobianEntry.h>

Collaboration diagram for btJacobianEntry:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 btJacobianEntry ()
 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)
 btJacobianEntry (const btVector3 &jointAxis, const btMatrix3x3 &world2A, const btMatrix3x3 &world2B, const btVector3 &inertiaInvA, const btVector3 &inertiaInvB)
 btJacobianEntry (const btVector3 &axisInA, const btVector3 &axisInB, const btVector3 &inertiaInvA, const btVector3 &inertiaInvB)
 btJacobianEntry (const btMatrix3x3 &world2A, const btVector3 &rel_pos1, const btVector3 &rel_pos2, const btVector3 &jointAxis, const btVector3 &inertiaInvA, const btScalar massInvA)
btScalar getDiagonal () const
btScalar getNonDiagonal (const btJacobianEntry &jacB, const btScalar massInvA) const
btScalar getNonDiagonal (const btJacobianEntry &jacB, const btScalar massInvA, const btScalar massInvB) const
btScalar getRelativeVelocity (const btVector3 &linvelA, const btVector3 &angvelA, const btVector3 &linvelB, const btVector3 &angvelB)

Public Attributes

btVector3 m_linearJointAxis
btVector3 m_aJ
btVector3 m_bJ
btVector3 m_0MinvJt
btVector3 m_1MinvJt
btScalar m_Adiag

Detailed Description

Jacobian entry is an abstraction that allows to describe constraints it can be used in combination with a constraint solver Can be used to relate the effect of an impulse to the constraint error.

Definition at line 31 of file btJacobianEntry.h.


Constructor & Destructor Documentation

Definition at line 34 of file btJacobianEntry.h.

{};
btJacobianEntry::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 
) [inline]

Definition at line 36 of file btJacobianEntry.h.

              :m_linearJointAxis(jointAxis)
       {
              m_aJ = world2A*(rel_pos1.cross(m_linearJointAxis));
              m_bJ = world2B*(rel_pos2.cross(-m_linearJointAxis));
              m_0MinvJt     = inertiaInvA * m_aJ;
              m_1MinvJt = inertiaInvB * m_bJ;
              m_Adiag = massInvA + m_0MinvJt.dot(m_aJ) + massInvB + m_1MinvJt.dot(m_bJ);

              btAssert(m_Adiag > btScalar(0.0));
       }

Here is the call graph for this function:

btJacobianEntry::btJacobianEntry ( const btVector3 jointAxis,
const btMatrix3x3 world2A,
const btMatrix3x3 world2B,
const btVector3 inertiaInvA,
const btVector3 inertiaInvB 
) [inline]

Definition at line 57 of file btJacobianEntry.h.

              :m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.)))
       {
              m_aJ= world2A*jointAxis;
              m_bJ = world2B*-jointAxis;
              m_0MinvJt     = inertiaInvA * m_aJ;
              m_1MinvJt = inertiaInvB * m_bJ;
              m_Adiag =  m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ);

              btAssert(m_Adiag > btScalar(0.0));
       }

Here is the call graph for this function:

btJacobianEntry::btJacobianEntry ( const btVector3 axisInA,
const btVector3 axisInB,
const btVector3 inertiaInvA,
const btVector3 inertiaInvB 
) [inline]

Definition at line 74 of file btJacobianEntry.h.

              : m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.)))
              , m_aJ(axisInA)
              , m_bJ(-axisInB)
       {
              m_0MinvJt     = inertiaInvA * m_aJ;
              m_1MinvJt = inertiaInvB * m_bJ;
              m_Adiag =  m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ);

              btAssert(m_Adiag > btScalar(0.0));
       }

Here is the call graph for this function:

btJacobianEntry::btJacobianEntry ( const btMatrix3x3 world2A,
const btVector3 rel_pos1,
const btVector3 rel_pos2,
const btVector3 jointAxis,
const btVector3 inertiaInvA,
const btScalar  massInvA 
) [inline]

Definition at line 90 of file btJacobianEntry.h.

              :m_linearJointAxis(jointAxis)
       {
              m_aJ= world2A*(rel_pos1.cross(jointAxis));
              m_bJ = world2A*(rel_pos2.cross(-jointAxis));
              m_0MinvJt     = inertiaInvA * m_aJ;
              m_1MinvJt = btVector3(btScalar(0.),btScalar(0.),btScalar(0.));
              m_Adiag = massInvA + m_0MinvJt.dot(m_aJ);

              btAssert(m_Adiag > btScalar(0.0));
       }

Here is the call graph for this function:


Member Function Documentation

Definition at line 107 of file btJacobianEntry.h.

{ return m_Adiag; }

Here is the caller graph for this function:

btScalar btJacobianEntry::getNonDiagonal ( const btJacobianEntry jacB,
const btScalar  massInvA 
) const [inline]

Definition at line 110 of file btJacobianEntry.h.

       {
              const btJacobianEntry& jacA = *this;
              btScalar lin = massInvA * jacA.m_linearJointAxis.dot(jacB.m_linearJointAxis);
              btScalar ang = jacA.m_0MinvJt.dot(jacB.m_aJ);
              return lin + ang;
       }

Here is the call graph for this function:

Here is the caller graph for this function:

btScalar btJacobianEntry::getNonDiagonal ( const btJacobianEntry jacB,
const btScalar  massInvA,
const btScalar  massInvB 
) const [inline]

Definition at line 121 of file btJacobianEntry.h.

       {
              const btJacobianEntry& jacA = *this;
              btVector3 lin = jacA.m_linearJointAxis * jacB.m_linearJointAxis;
              btVector3 ang0 = jacA.m_0MinvJt * jacB.m_aJ;
              btVector3 ang1 = jacA.m_1MinvJt * jacB.m_bJ;
              btVector3 lin0 = massInvA * lin ;
              btVector3 lin1 = massInvB * lin;
              btVector3 sum = ang0+ang1+lin0+lin1;
              return sum[0]+sum[1]+sum[2];
       }
btScalar btJacobianEntry::getRelativeVelocity ( const btVector3 linvelA,
const btVector3 angvelA,
const btVector3 linvelB,
const btVector3 angvelB 
) [inline]

Definition at line 133 of file btJacobianEntry.h.

       {
              btVector3 linrel = linvelA - linvelB;
              btVector3 angvela  = angvelA * m_aJ;
              btVector3 angvelb  = angvelB * m_bJ;
              linrel *= m_linearJointAxis;
              angvela += angvelb;
              angvela += linrel;
              btScalar rel_vel2 = angvela[0]+angvela[1]+angvela[2];
              return rel_vel2 + SIMD_EPSILON;
       }

Member Data Documentation

Definition at line 149 of file btJacobianEntry.h.

Definition at line 150 of file btJacobianEntry.h.

Definition at line 152 of file btJacobianEntry.h.

Definition at line 147 of file btJacobianEntry.h.

Definition at line 148 of file btJacobianEntry.h.

Definition at line 146 of file btJacobianEntry.h.


The documentation for this class was generated from the following file: