#include <vpjoint.h>
Inheritance diagram for VPJoint:
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 |
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.
|
Creates an uninitialized joint.
Definition at line 36 of file vpjoint.cpp. |
|
Definition at line 40 of file vpjoint.cpp. References dofList. |
|
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(). |
|
Definition at line 57 of file vpjoint.cpp. References dofList. Referenced by VPPolyaxialJoint::AddDof(), VPBiaxialJoint::AddDof(), VPBiaxialJoint::Adduct(), and VPBiaxialJoint::SetAdductionTo(). |
|
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(). |
|
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.
Definition at line 82 of file vpjoint.cpp. References dofList. Referenced by VPDof::MoveTo(). |
|
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(). |