32void btGeneric6DofSpringConstraint::init()
36 for (
int i = 0; i < 6; i++)
38 m_springEnabled[i] =
false;
45void btGeneric6DofSpringConstraint::enableSpring(
int index,
bool onOff)
47 btAssert((index >= 0) && (index < 6));
48 m_springEnabled[index] = onOff;
59void btGeneric6DofSpringConstraint::setStiffness(
int index,
btScalar stiffness)
61 btAssert((index >= 0) && (index < 6));
65void btGeneric6DofSpringConstraint::setDamping(
int index,
btScalar damping)
67 btAssert((index >= 0) && (index < 6));
71void btGeneric6DofSpringConstraint::setEquilibriumPoint()
76 for (i = 0; i < 3; i++)
80 for (i = 0; i < 3; i++)
86void btGeneric6DofSpringConstraint::setEquilibriumPoint(
int index)
88 btAssert((index >= 0) && (index < 6));
100void btGeneric6DofSpringConstraint::setEquilibriumPoint(
int index,
btScalar val)
102 btAssert((index >= 0) && (index < 6));
111 for (i = 0; i < 3; i++)
113 if (m_springEnabled[i])
126 for (i = 0; i < 3; i++)
128 if (m_springEnabled[i + 3])
149 btGeneric6DofConstraint::getInfo2(info);
152void btGeneric6DofSpringConstraint::setAxis(
const btVector3& axis1,
const btVector3& axis2)
154 btVector3 zAxis = axis1.normalized();
155 btVector3 yAxis = axis2.normalized();
156 btVector3 xAxis = yAxis.cross(zAxis);
159 frameInW.setIdentity();
160 frameInW.getBasis().setValue(xAxis[0], yAxis[0], zAxis[0],
161 xAxis[1], yAxis[1], zAxis[1],
162 xAxis[2], yAxis[2], zAxis[2]);
btFixedConstraint btRigidBody & rbB
btFixedConstraint btRigidBody const btTransform & frameInA
btFixedConstraint btRigidBody const btTransform const btTransform & frameInB
btVector3 m_calculatedLinearDiff
btRotationalLimitMotor m_angularLimits[3]
btGeneric6DofConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA)
btTranslationalLimitMotor m_linearLimits
btVector3 m_calculatedAxisAngleDiff
void calculateTransforms()
btScalar m_equilibriumPoint[6]
btScalar m_springDamping[6]
void internalUpdateSprings(btConstraintInfo2 *info)
btScalar m_springStiffness[6]
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE btScalar btFabs(btScalar x)
@ D6_SPRING_CONSTRAINT_TYPE
const btTransform & getCenterOfMassTransform() const
btScalar m_targetVelocity
target motor velocity
btScalar m_maxMotorForce
max force on motor
btVector3 m_maxMotorForce
max force on motor
btVector3 m_targetVelocity
target motor velocity