Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

VPJoint Class Reference

Representation of joints. More...

#include <vpjoint.h>

Inheritance diagram for VPJoint:

VPTransform VPSceneNode VPMemoryObj VPBiaxialJoint VPPlaneJoint VPPolyaxialJoint VPUniaxialJoint VPCondylarJoint VPEllipsoidJoint VPSaddlelJoint VPHingeJoint VPPivotJoint List of all members.

Public Member Functions

 VPJoint ()
 Creates an uninitialized joint.
virtual ~VPJoint ()
unsigned short int GetNumDofs ()
void AddDof (VPDof *dof)
void MakeLim ()
 Updates the LIM, based on DOFs' situation.
void TransformDofs (VPDof *intialDof, const VPTransform &trans)
 Apply a DOF's transform to its siblings.

Protected Attributes

std::list< VPDof * > dofList

Detailed Description

Representation of joints.

A joint can be seen as a special kind of geometric transformation. It deals with the complexities of real articulations, producing geometric transformations that can be delivered to the graphics pipeline. A joint is a collecion of DOFs (see VPDof) in which their order is important - the transformation of a joint is (... DOF3 * DOF2 * DOF1), that is, DOF1's transform, followed by DOF2's transform... In the current implementation, when DOFs change, their hierarchically inferior DOFs are transformed, that is, on a 3-DOF joint, changing the 2nd DOF tranforms the 3rd DOF. Their order is defined by AddDof method. On future implementations this should change to allow creation of more sophisticated joints. Joints may not share DOFs, see VPJoint for an explanation.

Definition at line 35 of file vpjoint.h.


Constructor & Destructor Documentation

VPJoint::VPJoint  ) 
 

Creates an uninitialized joint.

Definition at line 36 of file vpjoint.cpp.

VPJoint::~VPJoint  )  [virtual]
 

Definition at line 40 of file vpjoint.cpp.

References dofList.


Member Function Documentation

void VPJoint::AddDof VPDof dof  ) 
 

Reimplemented in VPBiaxialJoint, and VPPolyaxialJoint.

Definition at line 62 of file vpjoint.cpp.

References dofList, and VPDof::SetOwnerJoint().

Referenced by VPPolyaxialJoint::AddDof(), and VPBiaxialJoint::AddDof().

unsigned short int VPJoint::GetNumDofs  ) 
 

Definition at line 57 of file vpjoint.cpp.

References dofList.

Referenced by VPPolyaxialJoint::AddDof(), VPBiaxialJoint::AddDof(), VPBiaxialJoint::Adduct(), and VPBiaxialJoint::SetAdductionTo().

void VPJoint::MakeLim  ) 
 

Updates the LIM, based on DOFs' situation.

Not of interest to the application programmer. This method is called by DOFs when they are updated in order to keep the joint updated as well.

Definition at line 68 of file vpjoint.cpp.

References dofList.

Referenced by VPPolyaxialJoint::AddDof(), VPBiaxialJoint::AddDof(), and VPDof::MoveTo().

void VPJoint::TransformDofs VPDof intialDof,
const VPTransform trans
 

Apply a DOF's transform to its siblings.

This method is not of interest to the application programmer. It is called by DOFs that were changed, so that its siblings may be transformed. Currently, only the following DOFs (from the initial) are transformed, but there should be a more refined control mechanism to indicate which DOFs depend on which other DOFs.

Parameters:
initialDof [in] The DOF asking to change its siblings.
trans [in] Transformation to apply to hierarchically inferior DOFs.

Definition at line 82 of file vpjoint.cpp.

References dofList.

Referenced by VPDof::MoveTo().


Member Data Documentation

std::list<VPDof*> VPJoint::dofList [protected]
 

Definition at line 61 of file vpjoint.h.

Referenced by AddDof(), VPBiaxialJoint::Adduct(), VPBiaxialJoint::Flex(), GetNumDofs(), MakeLim(), VPBiaxialJoint::SetAdductionTo(), VPPolyaxialJoint::SetAductionTo(), VPPolyaxialJoint::SetFlexionTo(), VPBiaxialJoint::SetFlexionTo(), VPPolyaxialJoint::SetTwistTo(), TransformDofs(), and ~VPJoint().


The documentation for this class was generated from the following files:
Generated on Tue Sep 6 10:00:15 2005 for VPAT by  doxygen 1.4.4