Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

ctRigidBody Class Reference

a rigid body. has inertia tensor. More...

#include <rigidbod.h>

Inheritance diagram for ctRigidBody:

ctPhysicalEntity List of all members.

Public Methods

 ctRigidBody ()
 ctRigidBody (ctReferenceFrame &ref, ctDeltaReferenceFrame &dref)
virtual ~ctRigidBody ()
void calc_simple_I_tensor (real width, real height, real depth)
 Calculate interia tensor as if body was a solid block of given dimensions. More...

const ctMatrix3& get_I ()
 Get Inertia tensor.

const ctMatrix3& get_I_inv ()
 Get Inverse Inertia tensor.

ctMatrix3 get_I_inv_world ()
ctMatrix3 get_I_world ()
virtual void get_impulse_m_and_I_inv (real *pm, ctMatrix3 *pI_inv, const ctVector3 &impulse_point, const ctVector3 &unit_length_impulse_vector)
 Fill out mass and inverse inertia tensor behaviour for an impulse response impulse_point is point of collision in world frame.

ctVector3 get_angular_P ()
 Get Angular Momentum.

ctVector3 get_P ()
virtual int get_state_size ()
 ODE interface.

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

virtual int get_state (const real *state_array)
 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.

virtual void set_angular_v (const ctVector3 &pw)
 Set angular velocity.

virtual void set_v (const ctVector3 &pv)
 virtual because v is calculated from P ( momentum ) in rigid bodies.

virtual void add_angular_v (const ctVector3 &pw)
virtual void add_v (const ctVector3 &pv)
virtual void set_m (real pm)
virtual void apply_impulse (ctVector3 impulse_point, ctVector3 impulse_vector)
 Impulse_point is vector from center of body to point of collision in world coordinates. More...


Public Attributes

iObjectRegistryobject_reg

Static Public Methods

ctRigidBody* new_ctRigidBody ()
 Convienent to create enitites with parent as world frame of reference.

ctRigidBody* new_ctRigidBody (coord x, coord y, coord z)
int get_RB_state_size ()
 Get Rigid Body state size.


Protected Attributes

ctVector3 P
 Momentum.

ctVector3 L
 Angular momentum.

ctMatrix3 I
 Intertia tensor.

ctMatrix3 I_inv
 Inverse of Inertia tensor.


Detailed Description

a rigid body. has inertia tensor.


Member Function Documentation

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

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 ctRigidBody::calc_simple_I_tensor ( real width,
real height,
real depth )
 

Calculate interia tensor as if body was a solid block of given dimensions.

NOTE: m must be given first.

virtual int ctRigidBody::set_state ( real * state_array ) [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.


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