Simbody
3.4 (development)
|
(TODO: not implemented yet) This ContactTracker handles contacts between two arbitrary smooth surfaces by using their implicit functions, with no shape restrictions. More...
#include <ContactTracker.h>
Public Member Functions | |
GeneralImplicitPair (ContactGeometryTypeId type1, ContactGeometryTypeId type2) | |
virtual | ~GeneralImplicitPair () |
virtual bool | trackContact (const Contact &priorStatus, const Transform &X_GS1, const ContactGeometry &surface1, const Transform &X_GS2, const ContactGeometry &surface2, Real cutoff, Contact ¤tStatus) const |
The ContactTrackerSubsystem will invoke this method for any pair of contact surfaces that is already being tracked, or for which the static broad phase analysis indicated that they might be in contact now. | |
virtual bool | predictContact (const Contact &priorStatus, const Transform &X_GS1, const SpatialVec &V_GS1, const SpatialVec &A_GS1, const ContactGeometry &surface1, const Transform &X_GS2, const SpatialVec &V_GS2, const SpatialVec &A_GS2, const ContactGeometry &surface2, Real cutoff, Real intervalOfInterest, Contact &predictedStatus) const |
The ContactTrackerSubsystem will invoke this method for any tracked pair of contact surfaces that is still not in contact after trackContact() looked at it, or any untracked pair for which the dynamic broad phase indicated that they might be in contact within the interval of interest. | |
virtual bool | initializeContact (const Transform &X_GS1, const SpatialVec &V_GS1, const ContactGeometry &surface1, const Transform &X_GS2, const SpatialVec &V_GS2, const ContactGeometry &surface2, Real cutoff, Real intervalOfInterest, Contact &contactStatus) const |
At the beginning of a simulation we will have no past information to help disambiguate tricky contact situations. |
(TODO: not implemented yet) This ContactTracker handles contacts between two arbitrary smooth surfaces by using their implicit functions, with no shape restrictions.
Each surface must provide a bounding hierarchy with "safe" leaf objects, meaning that interactions between a leaf of each surface yield at most one solution.
Create one of these for each possible pair that you want handled this way.
SimTK::ContactTracker::GeneralImplicitPair::GeneralImplicitPair | ( | ContactGeometryTypeId | type1, |
ContactGeometryTypeId | type2 | ||
) | [inline] |
virtual SimTK::ContactTracker::GeneralImplicitPair::~GeneralImplicitPair | ( | ) | [inline, virtual] |
virtual bool SimTK::ContactTracker::GeneralImplicitPair::trackContact | ( | const Contact & | priorStatus, |
const Transform & | X_GS1, | ||
const ContactGeometry & | surface1, | ||
const Transform & | X_GS2, | ||
const ContactGeometry & | surface2, | ||
Real | cutoff, | ||
Contact & | currentStatus | ||
) | const [virtual] |
The ContactTrackerSubsystem will invoke this method for any pair of contact surfaces that is already being tracked, or for which the static broad phase analysis indicated that they might be in contact now.
Only position information is available. Note that the arguments and Contact object surfaces must be ordered by geometry type id as required by this tracker.
Implements SimTK::ContactTracker.
virtual bool SimTK::ContactTracker::GeneralImplicitPair::predictContact | ( | const Contact & | priorStatus, |
const Transform & | X_GS1, | ||
const SpatialVec & | V_GS1, | ||
const SpatialVec & | A_GS1, | ||
const ContactGeometry & | surface1, | ||
const Transform & | X_GS2, | ||
const SpatialVec & | V_GS2, | ||
const SpatialVec & | A_GS2, | ||
const ContactGeometry & | surface2, | ||
Real | cutoff, | ||
Real | intervalOfInterest, | ||
Contact & | predictedStatus | ||
) | const [virtual] |
The ContactTrackerSubsystem will invoke this method for any tracked pair of contact surfaces that is still not in contact after trackContact() looked at it, or any untracked pair for which the dynamic broad phase indicated that they might be in contact within the interval of interest.
Position, velocity, and acceleration information may be used. Ordering must be correct as discussed for trackContact().
Implements SimTK::ContactTracker.
virtual bool SimTK::ContactTracker::GeneralImplicitPair::initializeContact | ( | const Transform & | X_GS1, |
const SpatialVec & | V_GS1, | ||
const ContactGeometry & | surface1, | ||
const Transform & | X_GS2, | ||
const SpatialVec & | V_GS2, | ||
const ContactGeometry & | surface2, | ||
Real | cutoff, | ||
Real | intervalOfInterest, | ||
Contact & | contactStatus | ||
) | const [virtual] |
At the beginning of a simulation we will have no past information to help disambiguate tricky contact situations.
This method may use current position and velocity information in heuristics for guessing the contact status between the indicated pair of surfaces. Ordering must be correct as discussed for trackContact().
Implements SimTK::ContactTracker.