True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

TA::PhysicsJoint Class Reference

#include "TA/Physics/PhysicsJoint.h"


Detailed Description

Holds information relating to physical joints between dynamic objects.

Documentation for this class is not complete yet.

To create a joint, use TA::DynamicObject::AddJoint. All creation and destruction of joints is done in TA::DynamicObject.

After creating a joint it must be initialised using one of the initialisation functions:

or one of the extended initialised functions:

The extended functions are more difficult to use but allow a joint to be created and orientated regardless of the current location and orientation of the objects being joined. In most cases, it using the normal initialisation functions is probably more straight forward.

Any initialisation function can be called multiple times on the one joint to change its type or configuration.

The Joint Properties functions are not all fully documented, however, the names match the parameters passed in when initialising a Joint.

The reset functions are all deprecated. Use the initialise functions instead.

Note:
It is recommended that directly linked objects are not allowed to collided with each other. Avoiding collisions reduces the number of constraints on a system, hence speeding up the simulation. Collisions can also sometimes prevent the joint from acting as designed. Disallowing collisions between joint objects can be done with TA::PhysicsJoint::SetCollisionDisabledBetweenObjects.
Examples:

HingeJointExample.cpp, and SliderJointExample.cpp.


Public Types

enum  Type {
  TYPE_BALL_AND_SOCKET = 0,
  TYPE_LIMITED_BALL_AND_SOCKET = 1,
  TYPE_SQUARE_SOCKET = 2,
  TYPE_EULER_ANGLE_CONSTRAINT = 31,
  TYPE_LINEAR_SLIDER = 4,
  TYPE_ROTATION_CONSTRAINT = 5,
  TYPE_VECTOR_CONSTRAINT = 6
}

Public Member Functions

Initialise Functions
void  InitialiseEulerConstraint (const Vec3 &v3Position, const Mat33 &m33JointOrientation, const EulerAngles &minAngles, const EulerAngles &maxAngles)
void  InitialiseHinge (const Vec3 &v3Position, const Vec3 &v3HingeAxis, float fMinAngle, float fMaxAngle)
void  InitialiseBallAndSocket (const Vec3 &v3Position, const Vec3 &v3LimitCenterDirection, float fMaxAngle)
void  InitialiseLimitedBallAndSocket (const Vec3 &v3Position, const Mat33 &m33JointOrientation, float fMaxAngleY, float fMaxAngleXZ)
void  InitialiseSquareSocket (const Vec3 &v3Position, const Mat33 &m33JointOrientation, float fMinX, float fMaxX, float fMinY, float fMaxY, float fMinZ, float fMaxZ)
void  InitialiseSlider (const Vec3 &v3PosOnA, const Vec3 &v3StartPosOnB, const Vec3 &v3EndPosPosOnB)
void  InitialiseRotationConstraint (const Mat33 &m33JointOrientation, const EulerAngles &minAngles, const EulerAngles &maxAngles)
void  InitialiseVectorConstraint (const Vec3 &v3LimitCenterDirection, float fMaxAngle)
Extended Initialise Functions
void  InitialiseEulerConstraintEx (const Vec3 &v3LocalPosOnA, const Vec3 &v3LocalPosOnB, const Mat33 &m33JointOrientation, const Mat33 &m33DefaultRotationA, const Mat33 &m33DefaultRotationB, const EulerAngles &minAngles, const EulerAngles &maxAngles)
void  InitialiseHingeEx (const Vec3 &v3LocalPosOnA, const Vec3 &v3LocalPosOnB, const Vec3 &v3HingeAxis, const Vec3 &v3HingeCenterDirection, const Mat33 &m33DefaultRotationA, const Mat33 &m33DefaultRotationB, float fMinAngle, float fMaxAngle)
void  InitialiseBallAndSocketEx (const Vec3 &v3LocalPosOnA, const Vec3 &v3LocalPosOnB, const Vec3 &v3LocalLimitCenterDirectionOnA, const Vec3 &v3LocalLimitCenterDirectionOnB, float fMaxAngle)
void  InitialiseLimitedBallAndSocketEx (const Vec3 &v3LocalPosOnA, const Vec3 &v3LocalPosOnB, const Mat33 &m33JointOrientation, const Mat33 &m33DefaultRotationA, const Mat33 &m33DefaultRotationB, float fMaxAngleY, float fMaxAngleXZ)
void  InitialiseSquareSocketEx (const Vec3 &v3LocalPosOnA, const Vec3 &v3LocalPosOnB, const Mat33 &m33JointOrientation, const Mat33 &m33DefaultRotationA, const Mat33 &m33DefaultRotationB, float fMinX, float fMaxX, float fMinY, float fMaxY, float fMinZ, float fMaxZ)
void  InitialiseSliderEx (const Vec3 &v3LocalPosOnA, const Vec3 &v3LocalStartPosOnB, const Vec3 &v3LocalEndPosPosOnB)
void  InitialiseRotationConstraintEx (const Mat33 &m33JointOrientation, const Mat33 &m33DefaultRotationA, const Mat33 &m33DefaultRotationB, const EulerAngles &minAngles, const EulerAngles &maxAngles)
void  InitialiseVectorConstraintEx (const Vec3 &v3LocalLimitCenterDirectionOnA, const Vec3 &v3LocalLimitCenterDirectionOnB, float fMaxAngle)
Deprecated Reset Functions
void  Reset (const Vec3 &v3PosOnA, const Vec3 &v3PosOnB, const Mat33 &defaultRotationB, const EulerAngles &minAngles, const EulerAngles &maxAngles)
void  ResetAsTypeHinge (const Vec3 &v3PosOnA, const Vec3 &v3PosOnB, const Vec3 &v3LocalHingeAxis, const Vec3 &v3LocalHingeNormal, float fMinAngle, float fMaxAngle)
void  ResetAsTypeSocket (const Vec3 &v3PosOnA, const Vec3 &v3PosOnB, const Vec3 &v3LimitNormalOnA, const Vec3 &v3LimitNormalOnB, float fMaxAngle)
void  ResetAsTypeLimitedSocket (const Vec3 &v3PosOnA, const Vec3 &v3PosOnB, const Mat33 &defaultRotationB, float fMaxAngleY, float fMaxAngleXZ)
void  ResetAsTypeSquareSocket (const Vec3 &v3PosOnA, const Vec3 &v3PosOnB, const Mat33 &defaultRotationB, float fMinX, float fMaxX, float fMinY, float fMaxY, float fMinZ, float fMaxZ)
void  ResetAsTypeSlider (const Vec3 &v3PosOnA, const Vec3 &v3StartPosOnB, const Vec3 &v3EndPosPosOnB)
void  ResetAsTypeRotationConstraint (const Mat33 &defaultRotationB, const EulerAngles &minAngles, const EulerAngles &maxAngles)
void  ResetAsTypeVectorConstraint (const Vec3 &v3LimitNormalOnA, const Vec3 &v3LimitNormalOnB, float fMaxAngle)
Object Behaviour
bool  IsObjectASolid () const
void  SetObjectASolid (bool bValue)
bool  IsObjectBSolid () const
void  SetObjectBSolid (bool bValue)
bool  IsCollisionDisabledBetweenObjects () const
void  SetCollisionDisabledBetweenObjects (bool bValue)
Breaking
float  GetBreakForce () const
void  SetBreakForce (float fBreakForce)
void  SetBreakable (bool bValue)
bool  IsBreakable () const
void  SetBroken (bool bValue)
bool  IsBroken () const
User Data
void *  GetUserData () const
void  SetUserData (void *pUserData)
Joint Properties
Type  GetType () const
DynamicObject *  GetObjectA ()
DynamicObject *  GetObjectB ()
const Vec3 &  GetPosOnObjectA () const
const Vec3 &  GetPosOnObjectB () const
const Vec3 &  GetLimitNormalOnObjectA () const
const Vec3 &  GetLimitNormalOnObjectB () const
const Vec3 &  GetCenterDirectionOnObjectA () const
const Vec3 &  GetCenterDirectionOnObjectB () const
float  GetMaxAngle () const
const Mat33 &  GetJointOrientationA ()
const Mat33 &  GetJointOrientationB ()
const EulerAngles &  GetMinAngles ()
const EulerAngles &  GetMaxAngles ()
const Vec3 &  GetSliderPos0 () const
const Vec3 &  GetSliderPos1 () const


© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.