#include <PhysicalEngine.h>
Inheritance diagram for Enki::PhysicalObject:

Public Member Functions | |
| PhysicalObject () | |
| Constructor. | |
| virtual | ~PhysicalObject () |
| Destructor. | |
| void | setBoundingSurface (const An::Polygone *bs) |
| Set the shape of the object to bs, recompute r, assign color to faces. bs must exists during all object's life. | |
| const An::Polygone & | getTrueBoundingSurface (void) const |
| Return the shape of the object in object coordinates. | |
| virtual void | step (double dt) |
| A simulation step for this object. It is considered as deinterlaced. The position and orientation are updated, and speed is reduced according to global dynamic friction coefficient. | |
| virtual void | initLocalInteractions () |
| Initialize the collision logic. | |
| virtual void | doLocalInteractions (World *w, PhysicalObject *o, double dt, bool firstInteraction) |
| Do the collision with the other PhysicalObject. firstInteraction controls which object collides with which, dt is not used. | |
| virtual void | doLocalWallsInteraction (World *w) |
| Do the collisions with the walls of world w. | |
| virtual void | finalizeLocalInteractions (double dt) |
| All collisions are finished, deinterlace the object. | |
| virtual void | initGlobalInteractions () |
| Initialize the global interactions, do nothing for PhysicalObject. | |
| virtual void | doGlobalInteractions (World *w, double dt) |
| Do the global interactions with the world, do nothing for PhysicalObject. | |
| virtual void | finalizeGlobalInteractions () |
| All global interactions are finished, do nothing for PhysicalObject. | |
| void | collideWithStaticObject (const An::Point &cp1, const An::Point &cp2, const An::Vector &n1, const An::Vector &n2, const An::Vector &dist) |
| Dynamics for collision with a static object at points cp1 and cp2 with normals vectors n1 and n2 and a penetrated distance of dist. | |
| void | collideWithObject (PhysicalObject &object, const An::Point &cp, const An::Vector &dist) |
| Dynamics for collision with object at point cp with a penetrated distance of dist. | |
Public Attributes | |
| An::Point | pos |
| The position of the object. | |
| double | height |
| The height of the object, used for interaction with robot's sensors. | |
| double | angle |
| The orientation of the object in the world, standard trigonometric orientation. | |
| An::Vector | speed |
| The speed of the object. | |
| double | angSpeed |
| The rotation speed of the object, standard trigonometric orientation. | |
| double | mass |
| The mass of the object. If below zero, the object can't move (infinite mass). | |
| double | staticFrictionThreshold |
| The static friction threshold of the object. If a force is smaller than it, the object will not move. | |
| double | viscousFrictionTau |
| The viscous friction time constant. Half-life of speed when object is free. If lower than timestep, speed is forced to zero. | |
| double | viscousMomentFrictionTau |
| The viscous friction moment time constant. Half-life of angular speed when object is free. If lower than timestep, angular speed is forced to zero. | |
| double | collisionAngularFrictionFactor |
| Upon collision with static objects. The amount of rotation transmitted to the moving object. If zero, moving object slides over static one. If one, moving object is fully rotated. | |
| const An::Polygone * | boundingSurface |
| The shape of the object in object coordinates. If NULL, the object is circular and its radius is given by r . | |
| An::Polygone | absBoundingSurface |
| The shape of the object in world coordinates, updated on initLocalInteractions(). Invalid if boundingSurface is NULL. | |
| double | r |
| The radius of circular objects. If boundingSurface is not NULL, it is automatically computed. | |
| An::Color | color |
| The color of the object. | |
| std::valarray< An::Texture > | textures |
| Texture for several faces of this object. | |
Protected Member Functions | |
| void | collideWithStaticObject (const An::Vector &n) |
| Do the real rotation due to collision. | |
| void | computeAbsBoundingSurface (void) |
| Compute the shape of its object in world coordinates. | |
Protected Attributes | |
| An::Vector | deinterlaceVector |
| Vector used for object collisions. If its norm is greater than staticFrictionThreshold, the object is moved. | |
1.4.2