Go to the documentation of this file.
16 #ifndef SURGSIM_COLLISION_COLLISIONPAIR_H
17 #define SURGSIM_COLLISION_COLLISIONPAIR_H
39 Contact(
const CollisionDetectionType& newType,
40 const double& newDepth,
41 const double& newTime,
54 complimentary->force = -
force;
65 CollisionDetectionType
type;
86 const std::shared_ptr<Representation>& second);
95 const std::shared_ptr<Representation>& second);
99 const std::pair<std::shared_ptr<Representation>, std::shared_ptr<Representation>>&
104 CollisionDetectionType
getType()
const;
107 std::shared_ptr<Representation>
getFirst()
const;
110 std::shared_ptr<Representation>
getSecond()
const;
139 void addContact(
const std::shared_ptr<Contact>& contact);
145 std::list<std::shared_ptr<Contact>>&
getContacts();
178 template <
typename charT,
typename traits>
179 std::basic_ostream<charT, traits>&
operator << (std::basic_ostream<charT, traits>& out,
182 out <<
"Normal: " << contact.
normal.transpose() << std::endl;
183 out <<
"Depth: " << contact.
depth << std::endl;
184 out <<
"Time: " << contact.
time << std::endl;
bool m_isSwapped
Definition: CollisionPair.h:171
std::list< std::shared_ptr< Contact > > & getContacts()
Definition: CollisionPair.cpp:134
CollisionDetectionType m_type
Collision detection type for this pair.
Definition: CollisionPair.h:166
Collision Pair class, it signifies a pair of items that should be checked with the collision algorith...
Definition: CollisionPair.h:78
const std::pair< std::shared_ptr< Representation >, std::shared_ptr< Representation > > & getRepresentations() const
Function that returns the pair of representations of the objects that are colliding.
Definition: CollisionPair.cpp:75
bool isSwapped() const
Query if this the pair has been swapped from when it was constructed.
Definition: CollisionPair.cpp:151
std::list< std::shared_ptr< Contact > > m_contacts
List of current contacts.
Definition: CollisionPair.h:169
CollisionDetectionType getType() const
Get the collision detection type for this pair.
Definition: CollisionPair.cpp:80
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
Definition: CompoundShapeToGraphics.cpp:29
void clearContacts()
Reset clear the list of contacts, invalidating all the contacts.
Definition: CollisionPair.cpp:139
void setRepresentations(const std::shared_ptr< Representation > &first, const std::shared_ptr< Representation > &second)
Sets the representations in this pair, representations cannot be the same instance and neither can be...
Definition: CollisionPair.cpp:43
void addDcdContact(const double &depth, const SurgSim::Math::Vector3d &normal, const std::pair< SurgSim::DataStructures::Location, SurgSim::DataStructures::Location > &penetrationPoints)
Adds a DCD contact to the collision pair.
Definition: CollisionPair.cpp:109
std::shared_ptr< Representation > getFirst() const
Definition: CollisionPair.cpp:85
void addContact(const std::shared_ptr< Contact > &contact)
Adds a contact.
Definition: CollisionPair.cpp:118
CollisionPair()
Default Constructor.
Definition: CollisionPair.cpp:28
bool hasContacts() const
Definition: CollisionPair.cpp:95
void addCcdContact(const double &depth, const double &time, const SurgSim::Math::Vector3d &contactPoint, const SurgSim::Math::Vector3d &normal, const std::pair< SurgSim::DataStructures::Location, SurgSim::DataStructures::Location > &penetrationPoints)
Adds a CCD contact to the collision pair.
Definition: CollisionPair.cpp:100
void swapRepresentations()
Swap the representation pair so that first becomes second and second becomes first.
Definition: CollisionPair.cpp:144
A Location defines a local position w.r.t.
Definition: Location.h:39
std::basic_ostream< charT, traits > & operator<<(std::basic_ostream< charT, traits > &out, const SurgSim::Collision::Contact &contact)
Definition: CollisionPair.h:179
bool mayIntersect() const
Definition: CollisionPair.cpp:156
std::shared_ptr< Representation > getSecond() const
Definition: CollisionPair.cpp:90
~CollisionPair()
Destructor.
Definition: CollisionPair.cpp:38
void updateRepresentations()
Update the representations by adding the contacts to them.
Definition: CollisionPair.cpp:125
std::pair< std::shared_ptr< Representation >, std::shared_ptr< Representation > > m_representations
Pair of objects that are colliding.
Definition: CollisionPair.h:163