Use cylinder inertia tensor, instead of box, by default.
See Issue 427 Expose some internal data for constraints, Thanks to Francois Sugny, see Issue 420
This commit is contained in:
@@ -1114,4 +1114,12 @@ btScalar btConeTwistConstraint::getParam(int num, int axis) const
|
||||
}
|
||||
|
||||
|
||||
void btConeTwistConstraint::setFrames(const btTransform & frameA, const btTransform & frameB)
|
||||
{
|
||||
m_rbAFrame = frameA;
|
||||
m_rbBFrame = frameB;
|
||||
buildJacobian();
|
||||
//calculateTransforms();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -144,6 +144,16 @@ public:
|
||||
|
||||
void updateRHS(btScalar timeStep);
|
||||
|
||||
const btTransform & getFrameOffsetA() const
|
||||
{
|
||||
return m_rbAFrame;
|
||||
}
|
||||
|
||||
const btTransform & getFrameOffsetB() const
|
||||
{
|
||||
return m_rbBFrame;
|
||||
}
|
||||
|
||||
const btRigidBody& getRigidBodyA() const
|
||||
{
|
||||
return m_rbA;
|
||||
@@ -244,6 +254,7 @@ public:
|
||||
}
|
||||
bool isPastSwingLimit() { return m_solveSwingLimit; }
|
||||
|
||||
void setFrames(const btTransform & frameA, const btTransform & frameB);
|
||||
|
||||
void setDamping(btScalar damping) { m_damping = damping; }
|
||||
|
||||
|
||||
@@ -713,6 +713,15 @@ void btGeneric6DofConstraint::updateRHS(btScalar timeStep)
|
||||
}
|
||||
|
||||
|
||||
void btGeneric6DofConstraint::setFrames(const btTransform & frameA, const btTransform & frameB)
|
||||
{
|
||||
m_frameInA = frameA;
|
||||
m_frameInB = frameB;
|
||||
buildJacobian();
|
||||
calculateTransforms();
|
||||
}
|
||||
|
||||
|
||||
|
||||
btVector3 btGeneric6DofConstraint::getAxis(int axis_index) const
|
||||
{
|
||||
|
||||
@@ -433,6 +433,7 @@ public:
|
||||
*/
|
||||
btScalar getRelativePivotPosition(int axis_index) const;
|
||||
|
||||
void setFrames(const btTransform & frameA, const btTransform & frameB);
|
||||
|
||||
//! Test angular limit.
|
||||
/*!
|
||||
@@ -446,23 +447,45 @@ public:
|
||||
m_linearLimits.m_lowerLimit = linearLower;
|
||||
}
|
||||
|
||||
void getLinearLowerLimit(btVector3& linearLower)
|
||||
{
|
||||
linearLower = m_linearLimits.m_lowerLimit;
|
||||
}
|
||||
|
||||
void setLinearUpperLimit(const btVector3& linearUpper)
|
||||
{
|
||||
m_linearLimits.m_upperLimit = linearUpper;
|
||||
}
|
||||
|
||||
void getLinearUpperLimit(btVector3& linearUpper)
|
||||
{
|
||||
linearUpper = m_linearLimits.m_upperLimit;
|
||||
}
|
||||
|
||||
void setAngularLowerLimit(const btVector3& angularLower)
|
||||
{
|
||||
for(int i = 0; i < 3; i++)
|
||||
m_angularLimits[i].m_loLimit = btNormalizeAngle(angularLower[i]);
|
||||
}
|
||||
|
||||
void getAngularLowerLimit(btVector3& angularLower)
|
||||
{
|
||||
for(int i = 0; i < 3; i++)
|
||||
angularLower[i] = m_angularLimits[i].m_loLimit;
|
||||
}
|
||||
|
||||
void setAngularUpperLimit(const btVector3& angularUpper)
|
||||
{
|
||||
for(int i = 0; i < 3; i++)
|
||||
m_angularLimits[i].m_hiLimit = btNormalizeAngle(angularUpper[i]);
|
||||
}
|
||||
|
||||
void getAngularUpperLimit(btVector3& angularUpper)
|
||||
{
|
||||
for(int i = 0; i < 3; i++)
|
||||
angularUpper[i] = m_angularLimits[i].m_hiLimit;
|
||||
}
|
||||
|
||||
//! Retrieves the angular limit informacion
|
||||
btRotationalLimitMotor * getRotationalLimitMotor(int index)
|
||||
{
|
||||
|
||||
@@ -550,8 +550,12 @@ void btHingeConstraint::getInfo2Internal(btConstraintInfo2* info, const btTransf
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void btHingeConstraint::setFrames(const btTransform & frameA, const btTransform & frameB)
|
||||
{
|
||||
m_rbAFrame = frameA;
|
||||
m_rbBFrame = frameB;
|
||||
buildJacobian();
|
||||
}
|
||||
|
||||
|
||||
void btHingeConstraint::updateRHS(btScalar timeStep)
|
||||
|
||||
@@ -132,7 +132,19 @@ public:
|
||||
btRigidBody& getRigidBodyB()
|
||||
{
|
||||
return m_rbB;
|
||||
}
|
||||
}
|
||||
|
||||
btTransform & getFrameOffsetA()
|
||||
{
|
||||
return m_rbAFrame;
|
||||
}
|
||||
|
||||
btTransform & getFrameOffsetB()
|
||||
{
|
||||
return m_rbBFrame;
|
||||
}
|
||||
|
||||
void setFrames(const btTransform & frameA, const btTransform & frameB);
|
||||
|
||||
void setAngularOnly(bool angularOnly)
|
||||
{
|
||||
@@ -182,8 +194,7 @@ public:
|
||||
btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1);
|
||||
btVector3 rbAxisB2 = axisInB.cross(rbAxisB1);
|
||||
|
||||
|
||||
m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(pivotInA);
|
||||
m_rbBFrame.getOrigin() = m_rbB.getCenterOfMassTransform().inverse()(m_rbA.getCenterOfMassTransform()(pivotInA));
|
||||
m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(),
|
||||
rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(),
|
||||
rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );
|
||||
|
||||
Reference in New Issue
Block a user