#include <Constraint.h>


Public Types | |
| typedef DataTypes::Real | Real |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef DataTypes::VecConst | VecConst |
Public Member Functions | |
| Constraint (MechanicalState< DataTypes > *mm=NULL) | |
| virtual | ~Constraint () |
| virtual bool | isActive () const |
| if false, the constraint does nothing | |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| MechanicalState< DataTypes > * | getMState () |
| Retrieve the associated MechanicalState. | |
| virtual void | applyConstraint (unsigned int &contactId) |
| virtual void | applyConstraint (VecConst &, unsigned int &) |
| virtual std::string | getTemplateName () const |
| Get the template type names (if any) used to instantiate this object. | |
Vector operations | |
| virtual void | projectResponse () |
| Project dx to constrained space (dx models an acceleration). | |
| virtual void | projectVelocity () |
| Project v to constrained space (v models a velocity). | |
| virtual void | projectPosition () |
| Project x to constrained space (x models a position). | |
| virtual void | projectFreeVelocity () |
| Project vFree to constrained space (vFree models a velocity). | |
| virtual void | projectFreePosition () |
| Project xFree to constrained space (xFree models a position). | |
| virtual void | projectResponse (VecDeriv &dx)=0 |
| Project dx to constrained space (dx models an acceleration). | |
| virtual void | projectVelocity (VecDeriv &v)=0 |
| Project v to constrained space (v models a velocity). | |
| virtual void | projectPosition (VecCoord &x)=0 |
| Project x to constrained space (x models a position). | |
Static Public Member Functions | |
| template<class T > | |
| static bool | canCreate (T *&obj, objectmodel::BaseContext *context, objectmodel::BaseObjectDescription *arg) |
| Pre-construction check method called by ObjectFactory. | |
| static std::string | templateName (const Constraint< DataTypes > *=NULL) |
Data Fields | |
| Data< Real > | endTime |
| Time when the constraint becomes inactive (-1 for infinitely active). | |
Protected Attributes | |
| MechanicalState< DataTypes > * | mstate |
This class define the abstract API common to constraints using a given type of DOFs. A Constraint computes constraints applied to one simulated body given its current position and velocity.
Definition at line 55 of file Constraint.h.
| typedef DataTypes::Coord sofa::core::componentmodel::behavior::Constraint< DataTypes >::Coord |
Reimplemented in sofa::component::constraint::BoxConstraint< DataTypes >, sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, and sofa::filemanager::pml::LMLConstraint< DataTypes >.
Definition at line 61 of file Constraint.h.
| typedef DataTypes::Deriv sofa::core::componentmodel::behavior::Constraint< DataTypes >::Deriv |
Reimplemented in sofa::component::constraint::BoxConstraint< DataTypes >, sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, and sofa::filemanager::pml::LMLConstraint< DataTypes >.
Definition at line 62 of file Constraint.h.
| typedef DataTypes::Real sofa::core::componentmodel::behavior::Constraint< DataTypes >::Real |
Reimplemented in sofa::component::constraint::BoxConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, and sofa::component::ParticleSource< TDataTypes >.
Definition at line 58 of file Constraint.h.
| typedef DataTypes::VecConst sofa::core::componentmodel::behavior::Constraint< DataTypes >::VecConst |
Definition at line 63 of file Constraint.h.
| typedef DataTypes::VecCoord sofa::core::componentmodel::behavior::Constraint< DataTypes >::VecCoord |
Reimplemented in sofa::component::constraint::BoxConstraint< DataTypes >, sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, and sofa::filemanager::pml::LMLConstraint< DataTypes >.
Definition at line 59 of file Constraint.h.
| typedef DataTypes::VecDeriv sofa::core::componentmodel::behavior::Constraint< DataTypes >::VecDeriv |
Reimplemented in sofa::component::constraint::BoxConstraint< DataTypes >, sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, and sofa::filemanager::pml::LMLConstraint< DataTypes >.
Definition at line 60 of file Constraint.h.
| sofa::core::componentmodel::behavior::Constraint< DataTypes >::Constraint | ( | MechanicalState< DataTypes > * | mm = NULL |
) | [inline] |
Definition at line 45 of file Constraint.inl.
| sofa::core::componentmodel::behavior::Constraint< DataTypes >::~Constraint | ( | ) | [inline, virtual] |
Definition at line 52 of file Constraint.inl.
| virtual void sofa::core::componentmodel::behavior::Constraint< DataTypes >::applyConstraint | ( | VecConst & | , | |
| unsigned int & | ||||
| ) | [inline, virtual] |
Definition at line 138 of file Constraint.h.
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::applyConstraint | ( | unsigned int & | contactId | ) | [inline, virtual] |
Definition at line 111 of file Constraint.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getC(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive(), and sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate.
| static bool sofa::core::componentmodel::behavior::Constraint< DataTypes >::canCreate | ( | T *& | obj, | |
| objectmodel::BaseContext * | context, | |||
| objectmodel::BaseObjectDescription * | arg | |||
| ) | [inline, static] |
Pre-construction check method called by ObjectFactory.
Check that DataTypes matches the MechanicalState.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 143 of file Constraint.h.
Referenced by sofa::core::componentmodel::behavior::Constraint< TDataTypes >::canCreate().
| MechanicalState<DataTypes>* sofa::core::componentmodel::behavior::Constraint< DataTypes >::getMState | ( | ) | [inline] |
Retrieve the associated MechanicalState.
Definition at line 75 of file Constraint.h.
Referenced by sofa::component::constraint::LinearMovementConstraint< DataTypes >::handleTopologyChange(), sofa::component::constraint::FixedPlaneConstraint< DataTypes >::handleTopologyChange(), and sofa::component::constraint::FixedConstraint< DataTypes >::handleTopologyChange().
| virtual std::string sofa::core::componentmodel::behavior::Constraint< DataTypes >::getTemplateName | ( | ) | const [inline, virtual] |
Get the template type names (if any) used to instantiate this object.
Reimplemented from sofa::core::objectmodel::Base.
Definition at line 150 of file Constraint.h.
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::init | ( | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::constraint::BoxConstraint< DataTypes >, sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, and sofa::component::ParticleSource< TDataTypes >.
Definition at line 64 of file Constraint.inl.
References sofa::core::objectmodel::BaseObject::getContext(), and sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate.
| bool sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive | ( | ) | const [inline, virtual] |
if false, the constraint does nothing
Definition at line 57 of file Constraint.inl.
References sofa::core::componentmodel::behavior::Constraint< DataTypes >::endTime, and sofa::core::objectmodel::BaseObject::getContext().
Referenced by sofa::core::componentmodel::behavior::Constraint< DataTypes >::applyConstraint(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreePosition(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreeVelocity(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectPosition(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectResponse(), and sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectVelocity().
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreePosition | ( | ) | [inline, virtual] |
Project xFree to constrained space (xFree models a position).
This method retrieves the xFree vector from the MechanicalState and call the internal projectPosition(VecCoord&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseConstraint.
Definition at line 103 of file Constraint.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getXfree(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate, and sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectPosition().
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreeVelocity | ( | ) | [inline, virtual] |
Project vFree to constrained space (vFree models a velocity).
This method retrieves the vFree vector from the MechanicalState and call the internal projectVelocity(VecDeriv&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseConstraint.
Definition at line 95 of file Constraint.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getVfree(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate, and sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectVelocity().
| virtual void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectPosition | ( | VecCoord & | x | ) | [pure virtual] |
Project x to constrained space (x models a position).
This method must be implemented by the component, and is usually called by the generic Constraint::projectPosition() method.
Implemented in sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, sofa::filemanager::pml::LMLConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, and sofa::component::constraint::ParabolicConstraint< DataTypes >.
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectPosition | ( | ) | [inline, virtual] |
Project x to constrained space (x models a position).
This method retrieves the x vector from the MechanicalState and call the internal projectPosition(VecCoord&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseConstraint.
Definition at line 87 of file Constraint.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive(), and sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate.
Referenced by sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreePosition().
| virtual void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectResponse | ( | VecDeriv & | dx | ) | [pure virtual] |
Project dx to constrained space (dx models an acceleration).
This method must be implemented by the component, and is usually called by the generic Constraint::projectResponse() method.
Implemented in sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, and sofa::filemanager::pml::LMLConstraint< DataTypes >.
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectResponse | ( | ) | [inline, virtual] |
Project dx to constrained space (dx models an acceleration).
This method retrieves the dx vector from the MechanicalState and call the internal projectResponse(VecDeriv&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseConstraint.
Definition at line 71 of file Constraint.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getDx(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive(), and sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate.
| virtual void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectVelocity | ( | VecDeriv & | v | ) | [pure virtual] |
Project v to constrained space (v models a velocity).
This method must be implemented by the component, and is usually called by the generic Constraint::projectVelocity() method.
Implemented in sofa::component::constraint::FixedConstraint< DataTypes >, sofa::component::constraint::FixedPlaneConstraint< DataTypes >, sofa::component::constraint::LinearMovementConstraint< DataTypes >, sofa::component::constraint::OscillatorConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, sofa::component::ParticleSink< TDataTypes >, sofa::component::ParticleSource< TDataTypes >, sofa::filemanager::pml::LMLConstraint< DataTypes >, sofa::component::constraint::ParabolicConstraint< DataTypes >, and sofa::component::constraint::ParabolicConstraint< DataTypes >.
| void sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectVelocity | ( | ) | [inline, virtual] |
Project v to constrained space (v models a velocity).
This method retrieves the v vector from the MechanicalState and call the internal projectVelocity(VecDeriv&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseConstraint.
Definition at line 79 of file Constraint.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getV(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive(), and sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate.
Referenced by sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreeVelocity().
| static std::string sofa::core::componentmodel::behavior::Constraint< DataTypes >::templateName | ( | const Constraint< DataTypes > * | = NULL |
) | [inline, static] |
Definition at line 155 of file Constraint.h.
Referenced by sofa::core::componentmodel::behavior::Constraint< TDataTypes >::getTemplateName().
| Data<Real> sofa::core::componentmodel::behavior::Constraint< DataTypes >::endTime |
Time when the constraint becomes inactive (-1 for infinitely active).
Definition at line 69 of file Constraint.h.
Referenced by sofa::core::componentmodel::behavior::Constraint< DataTypes >::isActive().
MechanicalState<DataTypes>* sofa::core::componentmodel::behavior::Constraint< DataTypes >::mstate [protected] |
Definition at line 161 of file Constraint.h.
Referenced by sofa::core::componentmodel::behavior::Constraint< DataTypes >::applyConstraint(), sofa::component::constraint::FixedPlaneConstraint< DataTypes >::draw(), sofa::component::constraint::FixedConstraint< DataTypes >::draw(), sofa::component::constraint::BoxConstraint< DataTypes >::draw(), sofa::core::componentmodel::behavior::Constraint< TDataTypes >::getMState(), sofa::component::constraint::BoxConstraint< DataTypes >::init(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::init(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreePosition(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectFreeVelocity(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectPosition(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectResponse(), sofa::core::componentmodel::behavior::Constraint< DataTypes >::projectVelocity(), and sofa::component::constraint::FixedPlaneConstraint< DataTypes >::selectVerticesAlongPlane().
1.5.7.1