#include <MirtichRestitutionModel.h>
Inheritance diagram for Physsim::MirtichRestitutionModel:

Public Member Functions | |
| MirtichRestitutionModel () | |
| Constructs the Mirtich restitution model with the default integration step-size (.001). | |
| MirtichRestitutionModel (Real step_size) | |
| Constructs the Mirtich restitution model with the specified integration step-size. | |
| virtual void | load_state (BaseConstPtr object, bimap< BasePtr, BasePtr > *correspondence=NULL) |
| Implements Base::load_state(). | |
| virtual void | save_state (BasePtr object, bimap< BasePtr, BasePtr > *correspondence=NULL) const |
| Implements Base::save_state(). | |
| virtual void | clone (BasePtr &cloned, bimap< BasePtr, BasePtr > *object_map=NULL) const |
| Implements Base::clone(). | |
| virtual void | process_impacts (const std::list< ContactPtr > &contacts) const |
| Processes a list of impact contacts. | |
| virtual void | load_from_xml (XMLTreeConstPtr node, std::map< std::string, BasePtr > &id_map) |
| Implements Base::load_from_xml(). | |
| virtual void | save_to_xml (XMLTreePtr node, std::list< BaseConstPtr > &shared_objects) const |
| Implements Base::save_to_xml(). | |
| virtual bool | is_global_method () const |
| Indicates whether this is a global method. | |
| void | set_step_size (Real step_size) |
| Sets the integration step size used for Mirtich's method. | |
| Real | get_step_size () const |
| Gets the integration step size used for Mirtich's method. | |
The Mirtich model for collision restitution (using Stronge's hypothesis) states that the total work performed by during the restitution phase of a collision is less than or equal to -epsilon times the work performed during the compression phase. This model comes from Mirtich's thesis [Mirtich, 1996]. In contrast to the Newton model for collision restitution, Mirtich's model allows friction to be treated at a colliding contact without adding energy to the system.
Note that the MirtichRestitutionModel is currently broken. Some work is necessary to get it functioning again. I'm not sure that the work is warranted, given that the frictional Newton and Poisson methods seem to work well and are much, much faster.
| void MirtichRestitutionModel::process_impacts | ( | const std::list< ContactPtr > & | contacts | ) | const [virtual] |
Processes a list of impact contacts.
This processing is currently performed sequentially, one impact handled after another.
Implements Physsim::CollisionMethod.
| virtual bool Physsim::MirtichRestitutionModel::is_global_method | ( | ) | const [inline, virtual] |
Indicates whether this is a global method.
Global methods determine all impulses at once, while local methods treat contacts sequentially. Global methods are called last in a hybrid framework to be able to account for all impulses, including those applied by local methods.
Implements Physsim::CollisionMethod.
1.5.1