#include <SurgSim/Physics/CcdCollisionLoop.h>
◆ CcdCollisionLoop()
SurgSim::Physics::CcdCollisionLoop::CcdCollisionLoop |
( |
bool |
copyState | ) |
|
|
explicit |
◆ ~CcdCollisionLoop()
SurgSim::Physics::CcdCollisionLoop::~CcdCollisionLoop |
( |
| ) |
|
◆ backupContacts()
Backs up all current contacts into oldContacts and then clears the ccdPairs.
- Parameters
-
ccdPairs | the list of current contact pairs |
oldContacts | the backup of the contacts |
◆ doUpdate()
◆ filterLaterContacts()
void SurgSim::Physics::CcdCollisionLoop::filterLaterContacts |
( |
std::vector< std::shared_ptr< Collision::CollisionPair >> * |
ccdPairs, |
|
|
double |
epsilon, |
|
|
double |
contactTime |
|
) |
| |
|
private |
Removes all contacts with contact time greater than the first contact time + epsilon.
- Parameters
-
ccdPairs | the list of pairs that should be checked for contacts |
epsilon | the epsilon to be added to the first contactTime for filtering |
contactTime | times outside of epsilon from contactTime will be reomved from consideration |
◆ findEarliestContact()
bool SurgSim::Physics::CcdCollisionLoop::findEarliestContact |
( |
const std::vector< std::shared_ptr< Collision::CollisionPair >> & |
ccdPairs, |
|
|
double * |
currentTimeOfImpact |
|
) |
| |
|
private |
Takes all the contacts from ccdPairs, finds the first contact wrt contact time.
- Parameters
-
| ccdPairs | the list of pairs that should be checked for contacts |
[out] | currentTimeOfImpact | the earliest contact time found in ccdPairs |
- Returns
- true if there were any contacts found in ccdPairs
◆ printContacts()
void SurgSim::Physics::CcdCollisionLoop::printContacts |
( |
const std::vector< std::shared_ptr< Collision::CollisionPair >> & |
ccdPairs | ) |
|
|
private |
Logs all of the contacts.
- Parameters
-
ccdPairs | the list of current contact pairs |
◆ restoreContacts()
Adds all of the backed up contacts back into the current contacts.
Contacts already in 'ccdPairs' will be kept..
- Parameters
-
ccdPairs | the list of current contact pairs |
oldContacts | the backup of the contacts |
◆ SURGSIM_CLASSNAME()
◆ CcdCollisionLoopTest_FilterContacts_Test
friend class CcdCollisionLoopTest_FilterContacts_Test |
|
friend |
◆ CcdCollisionLoopTest_FilterContactsWithEpsilon_Test
friend class CcdCollisionLoopTest_FilterContactsWithEpsilon_Test |
|
friend |
◆ m_buildMlcp
std::unique_ptr<BuildMlcp> SurgSim::Physics::CcdCollisionLoop::m_buildMlcp |
|
private |
◆ m_ccdCollision
std::unique_ptr<CcdCollision> SurgSim::Physics::CcdCollisionLoop::m_ccdCollision |
|
private |
◆ m_constraintGeneration
◆ m_contactFilter
std::unique_ptr<ContactFiltering> SurgSim::Physics::CcdCollisionLoop::m_contactFilter |
|
private |
◆ m_epsilonFactor
double SurgSim::Physics::CcdCollisionLoop::m_epsilonFactor |
|
private |
epsilon as a fraction of dt, i.e.
if this is 100, the epsilon will be dt/100 during the iteration epsilon will be scaled to remain dt/100 as it pertains to the ever shrinking interval that is the iterations intervall
◆ m_logger
◆ m_maxIterations
size_t SurgSim::Physics::CcdCollisionLoop::m_maxIterations |
|
private |
maximum number of iterations to run
◆ m_pushResults
std::unique_ptr<PushResults> SurgSim::Physics::CcdCollisionLoop::m_pushResults |
|
private |
◆ m_solveMlcp
std::unique_ptr<SolveMlcp> SurgSim::Physics::CcdCollisionLoop::m_solveMlcp |
|
private |
◆ m_updateCcdData
std::unique_ptr<UpdateCcdData> SurgSim::Physics::CcdCollisionLoop::m_updateCcdData |
|
private |
The documentation for this class was generated from the following files: