sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes > Class Template Reference

#include <BarycentricPenalityContact.h>

Inheritance diagram for sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >:

Collaboration graph
[legend]

Public Types

typedef TCollisionModel1 CollisionModel1
typedef TCollisionModel2 CollisionModel2
typedef
core::componentmodel::collision::Intersection 
Intersection
typedef
core::componentmodel::collision::DetectionOutputVector 
OutputVector
typedef
core::componentmodel::collision::TDetectionOutputVector
< CollisionModel1,
CollisionModel2 > 
TOutputVector
typedef ResponseDataTypes DataTypes1
typedef ResponseDataTypes DataTypes2
typedef
core::componentmodel::behavior::MechanicalState
< DataTypes1 > 
MechanicalState1
typedef
core::componentmodel::behavior::MechanicalState
< DataTypes2 > 
MechanicalState2
typedef CollisionModel1::Element CollisionElement1
typedef CollisionModel2::Element CollisionElement2
typedef
forcefield::PenalityContactForceField
< ResponseDataTypes > 
ResponseForceField

Public Member Functions

 BarycentricPenalityContact (CollisionModel1 *model1, CollisionModel2 *model2, Intersection *intersectionMethod)
 ~BarycentricPenalityContact ()
void cleanup ()
 Called just before deleting this object Any object in the tree bellow this object that are to be removed will be removed only after this call, so any references this object holds should still be valid.
std::pair
< core::CollisionModel
*, core::CollisionModel * > 
getCollisionModels ()
 Get the pair of collision models which are in contact.
void setDetectionOutputs (OutputVector *outputs)
 Set the generic description of a contact point.
void createResponse (core::objectmodel::BaseContext *group)
void removeResponse ()
void draw ()
 Render internal data of this object, for debugging purposes.
void getCorrespondingCollisionModels (const core::componentmodel::behavior::InteractionForceField *_ff, core::CollisionModel *&_model1, core::CollisionModel *&_model2)
template<>
void setDetectionOutputs (OutputVector *o)
 Set the generic description of a contact point.
template<>
void setDetectionOutputs (OutputVector *o)
 Set the generic description of a contact point.

Protected Types

typedef std::map
< core::componentmodel::collision::DetectionOutput::ContactId,
int > 
ContactIndexMap

Protected Attributes

CollisionModel1 * model1
CollisionModel2 * model2
Intersection * intersectionMethod
ContactMapper< CollisionModel1,
DataTypes1 > 
mapper1
ContactMapper< CollisionModel2,
DataTypes2 > 
mapper2
ResponseForceField * ff
core::objectmodel::BaseContext * parent
ContactIndexMap contactIndex
 Mapping of contactids to force element (+1, so that 0 means not active).

Detailed Description

template<class TCollisionModel1, class TCollisionModel2, class ResponseDataTypes = sofa::defaulttype::Vec3Types>
class sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >

Definition at line 52 of file BarycentricPenalityContact.h.


Member Typedef Documentation

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef CollisionModel1::Element sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::CollisionElement1

Definition at line 64 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef CollisionModel2::Element sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::CollisionElement2

Definition at line 65 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef TCollisionModel1 sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::CollisionModel1

Definition at line 55 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef TCollisionModel2 sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::CollisionModel2

Definition at line 56 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef std::map<core::componentmodel::collision::DetectionOutput::ContactId,int> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::ContactIndexMap [protected]

Definition at line 82 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef ResponseDataTypes sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::DataTypes1

Definition at line 60 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef ResponseDataTypes sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::DataTypes2

Definition at line 61 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef core::componentmodel::collision::Intersection sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::Intersection

Definition at line 57 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef core::componentmodel::behavior::MechanicalState<DataTypes1> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::MechanicalState1

Definition at line 62 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef core::componentmodel::behavior::MechanicalState<DataTypes2> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::MechanicalState2

Definition at line 63 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef core::componentmodel::collision::DetectionOutputVector sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::OutputVector

Definition at line 58 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef forcefield::PenalityContactForceField<ResponseDataTypes> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::ResponseForceField

Definition at line 69 of file BarycentricPenalityContact.h.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
typedef core::componentmodel::collision::TDetectionOutputVector<CollisionModel1,CollisionModel2> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::TOutputVector

Definition at line 59 of file BarycentricPenalityContact.h.


Constructor & Destructor Documentation

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::BarycentricPenalityContact ( CollisionModel1 *  model1,
CollisionModel2 *  model2,
Intersection *  intersectionMethod 
) [inline]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::~BarycentricPenalityContact (  )  [inline]

Definition at line 51 of file BarycentricPenalityContact.inl.


Member Function Documentation

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
void sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::cleanup (  )  [inline, virtual]

Called just before deleting this object Any object in the tree bellow this object that are to be removed will be removed only after this call, so any references this object holds should still be valid.

Called just before deleting this object Any object in the tree bellow this object that are to be removed will be removed only after this call, so any references this object holds should still be valid.

Reimplemented from sofa::core::objectmodel::BaseObject.

Definition at line 57 of file BarycentricPenalityContact.inl.

References sofa::core::objectmodel::BaseObject::cleanup(), sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::ff, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::mapper1, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::mapper2, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::parent, and sofa::core::objectmodel::BaseContext::removeObject().

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
void sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::createResponse ( core::objectmodel::BaseContext *  group  )  [inline, virtual]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
void sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::draw (  )  [inline, virtual]

Render internal data of this object, for debugging purposes.

Reimplemented from sofa::core::objectmodel::BaseObject.

Definition at line 233 of file BarycentricPenalityContact.inl.

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
std::pair<core::CollisionModel*,core::CollisionModel*> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::getCollisionModels (  )  [inline, virtual]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
void sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::getCorrespondingCollisionModels ( const core::componentmodel::behavior::InteractionForceField *  _ff,
core::CollisionModel *&  _model1,
core::CollisionModel *&  _model2 
) [inline, virtual]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
void sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::removeResponse (  )  [inline, virtual]

template<>
void sofa::component::collision::BarycentricPenalityContact< CudaPointModel, CudaRigidDistanceGridCollisionModel, CudaVec3fTypes >::setDetectionOutputs ( OutputVector *  outputs  )  [inline, virtual]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes >
void sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::setDetectionOutputs ( OutputVector *  outputs  )  [inline, virtual]

Set the generic description of a contact point.

Implements sofa::core::componentmodel::collision::Contact.

Definition at line 72 of file BarycentricPenalityContact.inl.

References sofa::component::forcefield::PenalityContactForceField< DataTypes >::addContact(), sofa::component::forcefield::PenalityContactForceField< DataTypes >::clear(), sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::contactIndex, sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::core::objectmodel::BaseObject::f_printLog, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::ff, sofa::core::componentmodel::collision::Intersection::getContactDistance(), sofa::core::objectmodel::Base::getName(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::collision::DetectionOutput::id, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::intersectionMethod, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::mapper1, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::mapper2, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::model1, sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::model2, sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::core::componentmodel::collision::DetectionOutput::point, sofa::core::objectmodel::Base::setName(), sofa::core::componentmodel::collision::TDetectionOutputVector< CM1, CM2 >::size(), and sofa::core::componentmodel::collision::DetectionOutput::value.


Field Documentation

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
ContactIndexMap sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::contactIndex [protected]

Mapping of contactids to force element (+1, so that 0 means not active).

This allows to ignore duplicate contacts, and preserve information associated with each contact point over time

Definition at line 85 of file BarycentricPenalityContact.h.

Referenced by sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::setDetectionOutputs().

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
ResponseForceField* sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::ff [protected]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
Intersection* sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::intersectionMethod [protected]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
ContactMapper<CollisionModel1,DataTypes1> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::mapper1 [protected]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
ContactMapper<CollisionModel2,DataTypes2> sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::mapper2 [protected]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
CollisionModel1* sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::model1 [protected]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
CollisionModel2* sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::model2 [protected]

template<class TCollisionModel1 , class TCollisionModel2 , class ResponseDataTypes = sofa::defaulttype::Vec3Types>
core::objectmodel::BaseContext* sofa::component::collision::BarycentricPenalityContact< TCollisionModel1, TCollisionModel2, ResponseDataTypes >::parent [protected]


The documentation for this class was generated from the following files:

Generated on Sun Nov 23 04:17:22 2008 for Sofa by  doxygen 1.5.7.1