SOFA API  1df67014
Open source framework for multi-physics simuation
sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T > Class Template Reference
Inheritance diagram for sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >:

Protected Attributes

T * impl
 

Public Member Functions

 MemberElementIntersector (T *ptr)
 
bool canIntersect (core::CollisionElementIterator elem1, core::CollisionElementIterator elem2) override
 Test if 2 elements can collide. Note that this can be conservative (i.e. return true even when no collision is present) More...
 
bool canIntersect (core::CollisionElementIterator elem1, core::CollisionElementIterator elem2, const core::collision::Intersection *currentIntersection) override
 Test if 2 elements can collide. Note that this can be conservative (i.e. return true even when no collision is present) More...
 
int beginIntersect (core::CollisionModel *model1, core::CollisionModel *model2, DetectionOutputVector *&contacts) override
 
int intersect (core::CollisionElementIterator elem1, core::CollisionElementIterator elem2, DetectionOutputVector *contacts) override
 Compute the intersection between 2 elements. More...
 
int intersect (core::CollisionElementIterator elem1, core::CollisionElementIterator elem2, DetectionOutputVector *contacts, const core::collision::Intersection *currentIntersection) override
 Compute the intersection between 2 elements. Return the number of contacts written in the contacts vector. More...
 
std::string name () const override
 
int endIntersect (core::CollisionModel *model1, core::CollisionModel *model2, DetectionOutputVector *contacts) override
 End intersection tests between two collision models. Return the number of contacts written in the contacts vector. More...
 
- Public Member Functions inherited from sofa::core::collision::ElementIntersector
virtual ~ElementIntersector ()
 

Attribute details

◆ impl

template<class Elem1 , class Elem2 , class T >
T* sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::impl
protected

Constructor details

◆ MemberElementIntersector()

template<class Elem1 , class Elem2 , class T >
sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::MemberElementIntersector ( T *  ptr)
inline

Function details

◆ beginIntersect()

template<class Elem1 , class Elem2 , class T >
int sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::beginIntersect ( core::CollisionModel model1,
core::CollisionModel model2,
DetectionOutputVector *&  contacts 
)
inlineoverridevirtual

Begin intersection tests between two collision models. Return the number of contacts written in the contacts vector. If the given contacts vector is nullptr, then this method should allocate it.

Implements sofa::core::collision::ElementIntersector.

◆ canIntersect() [1/2]

template<class Elem1 , class Elem2 , class T >
bool sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::canIntersect ( core::CollisionElementIterator  elem1,
core::CollisionElementIterator  elem2 
)
inlineoverridevirtual

Test if 2 elements can collide. Note that this can be conservative (i.e. return true even when no collision is present)

Reimplemented from sofa::core::collision::ElementIntersector.

◆ canIntersect() [2/2]

template<class Elem1 , class Elem2 , class T >
bool sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::canIntersect ( core::CollisionElementIterator  elem1,
core::CollisionElementIterator  elem2,
const core::collision::Intersection currentIntersection 
)
inlineoverridevirtual

Test if 2 elements can collide. Note that this can be conservative (i.e. return true even when no collision is present)

Implements sofa::core::collision::ElementIntersector.

◆ endIntersect()

template<class Elem1 , class Elem2 , class T >
int sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::endIntersect ( core::CollisionModel model1,
core::CollisionModel model2,
DetectionOutputVector contacts 
)
inlineoverridevirtual

End intersection tests between two collision models. Return the number of contacts written in the contacts vector.

Implements sofa::core::collision::ElementIntersector.

◆ intersect() [1/2]

template<class Elem1 , class Elem2 , class T >
int sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::intersect ( core::CollisionElementIterator  elem1,
core::CollisionElementIterator  elem2,
DetectionOutputVector contacts 
)
inlineoverridevirtual

Compute the intersection between 2 elements.

Reimplemented from sofa::core::collision::ElementIntersector.

◆ intersect() [2/2]

template<class Elem1 , class Elem2 , class T >
int sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::intersect ( core::CollisionElementIterator  elem1,
core::CollisionElementIterator  elem2,
DetectionOutputVector contacts,
const core::collision::Intersection currentIntersection 
)
inlineoverridevirtual

Compute the intersection between 2 elements. Return the number of contacts written in the contacts vector.

Implements sofa::core::collision::ElementIntersector.

◆ name()

template<class Elem1 , class Elem2 , class T >
std::string sofa::core::collision::MemberElementIntersector< Elem1, Elem2, T >::name ( ) const
inlineoverridevirtual