Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

ctArticulatedBody Class Reference

me some of these methods probably don't need to be virtual anymore, esp. those dealing with RF and dRF. More...

#include <articula.h>

Inheritance diagram for ctArticulatedBody:

ctPhysicalEntity List of all members.

Public Methods

 ctArticulatedBody ()
 ctArticulatedBody (ctRigidBody *phandle)
virtual ~ctArticulatedBody ()
ctReferenceFrameget_handle_RF ()
 return reference frame for this handle ( to world ).

ctRigidBodyget_handle ()
 return the physical body that is the root of this articulated figure.

void rotate_around_axis (real ptheta)
 rotate this link around it's axis by ptheta radians.

void link_revolute (ctArticulatedBody *child, ctVector3 &pin_joint_offset, ctVector3 &pout_joint_offset, ctVector3 &pjoint_axis)
 link two bodies together with a revolute joint. More...

void link_joint (ctJoint *jnt, ctArticulatedBody *child)
virtual void apply_given_F (ctForce &frc)
 Add this force to the list of forces that will be applied each frame.

void apply_forces (real t)
 compute force and torque from all forces acting on this articulated body that includeds this handle and all children down to the leaf nodes.

virtual void apply_impulse (ctVector3 impulse_point, ctVector3 impulse_vector)
 Can use this to impart and impulse to this object. More...

virtual void get_impulse_m_and_I_inv (real *pm, ctMatrix3 *pI_inv, const ctVector3 &impulse_point, const ctVector3 &unit_length_impulse_vector)
 impulse_point is point of collision in world frame.

virtual void init_state ()
 Init values that will influence the calculation of the change in state.

virtual int get_state_size ()
 Return the size of this entity's state vector.

virtual int set_state (real *sa)
 Add this body's state to the state vector buffer passed in. More...

virtual int get_state (const real *sa)
 Download state from buffer into this entity.

virtual int set_delta_state (real *state_array)
 Add change in state vector over time to state buffer parameter.

int set_state_links (real *sa)
 state methods for all children. More...

int get_state_links (const real *sa)
int set_delta_state_links (real *state_array)
void make_grounded ()
 ungrounded articulated bodies are not staticaly attached to the world frame.

void make_ungrounded ()
void attach_to_entity (ctKinematicEntity *pattache)
 this articulated body is attached to some other entity. More...

void detattached_from_entity ()
ctFeatherstoneAlgorithm* install_featherstone_solver ()
 forward dynamics algorithm. The default solver.

ctInverseKinematicsinstall_IK_solver ()
 inverse kinematics algorithm. set the goal after this.

void compute_link_velocities ()
 propagates velocities from base link to ends of articulated bodies also calculates T_fg and r_fg.

void calc_relative_frame ()
 calculate relative frame of reference from parent.

void update_links ()

Public Attributes

int tag

Static Public Methods

void set_joint_friction (double pfrict=DEFAULT_JOINT_FRICTION)
 me this should be in ctJoint.


Protected Attributes

ctRigidBodyhandle
 rigid body for the root of this articulated body.

ctJointinboard_joint
 joint attaching this body to parent. NULL if root.

ctLinkList<ctArticulatedBody> outboard_links
 children.

bool is_grounded
 is it fixed to the world frame?

ctKinematicEntityattached_to
ctMatrix3 T_fg
 Calculated in compute_link_velocities. More...

ctVector3 r_fg
 Frame to this frame. More...

ctVector3 w_body
 Angular and linear velocity calculated in this bodies frame. More...

ctVector3 v_body

Friends

class  ctFeatherstoneAlgorithm
class  ctInverseKinematics
class  ctJoint

Detailed Description

me some of these methods probably don't need to be virtual anymore, esp. those dealing with RF and dRF.


Member Function Documentation

virtual void ctArticulatedBody::apply_impulse ( ctVector3 impulse_point,
ctVector3 impulse_vector ) [virtual]
 

Can use this to impart and impulse to this object.

Impulse_point is vector from center of body to point of collision in world coordinates. Impulse_vector is in world coords

Reimplemented from ctPhysicalEntity.

void ctArticulatedBody::attach_to_entity ( ctKinematicEntity * pattache ) [inline]
 

this articulated body is attached to some other entity.

it will respond to the accelerations of the entity it is attached to.

void ctArticulatedBody::link_revolute ( ctArticulatedBody * child,
ctVector3 & pin_joint_offset,
ctVector3 & pout_joint_offset,
ctVector3 & pjoint_axis )
 

link two bodies together with a revolute joint.

pin_joint_offset is the offset from the inboard( parent ) link to joint pout_joint_offset is from the outbaord (child) link to the joint. all offsets are directed from a link's C.O.M. to the joint

virtual int ctArticulatedBody::set_state ( real * sa ) [virtual]
 

Add this body's state to the state vector buffer passed in.

Increment state buffer to point after added state. Upload

Reimplemented from ctPhysicalEntity.

int ctArticulatedBody::set_state_links ( real * sa )
 

state methods for all children.

just need to call these for root and it will recurse down and call standard state methods appropriately for all children


Member Data Documentation

ctMatrix3 ctArticulatedBody::T_fg [protected]
 

Calculated in compute_link_velocities.

coord transfrom matrix, not rotation, from inboard link

ctVector3 ctArticulatedBody::r_fg [protected]
 

Frame to this frame.

Vector from center of inboard frame to this frame in this frame's coords

ctVector3 ctArticulatedBody::w_body [protected]
 

Angular and linear velocity calculated in this bodies frame.

Calculated in compute_link_velocities.


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000