Simbody
|
A ContactPatch is the description of the forces and the deformed shape of the contact surfaces that result from compliant contact interactions. More...
#include <CompliantContactSubsystem.h>
Public Member Functions | |
void | clear () |
bool | isValid () const |
const ContactForce & | getContactForce () const |
int | getNumDetails () const |
const ContactDetail & | getContactDetail (int n) const |
void | changeFrameInPlace (const Transform &X_BA) |
This object is currently in an assumed frame A; given a transform from another frame B to A we'll re-measure and re-express this in B. | |
Public Attributes | |
ContactForce | m_resultant |
Array_< ContactDetail > | m_elements |
A ContactPatch is the description of the forces and the deformed shape of the contact surfaces that result from compliant contact interactions.
This should not be confused with the Contact object that describes only the overlap in undeformed surface geometry and knows nothing of forces or materials. Although there are several qualitatively different kinds of compliant contact models, we assume that each can be described by some number of contact "elements" and report the detailed results in terms of those elements. Depending on the model, the elements may be associated with the surfaces or may be associated with the patch. Either way, every element applies equal and opposite forces to both surfaces. There is not necessarily any direct correspondence between elements on one surface with elements on the other.
A Hertz contact will have only a single element that belongs to the patch, while an elastic foundation contact will have many, with each element associated with one or the other surface. Only the elements that are currently participating in contact will have entries here; the surface and element id is stored with each piece of ContactDetail information. There is also some basic information needed to advance the simulation and that is common to all contact patch types and stored as a ContactForce resultant.
void SimTK::ContactPatch::clear | ( | ) | [inline] |
bool SimTK::ContactPatch::isValid | ( | ) | const [inline] |
const ContactForce& SimTK::ContactPatch::getContactForce | ( | ) | const [inline] |
int SimTK::ContactPatch::getNumDetails | ( | ) | const [inline] |
const ContactDetail& SimTK::ContactPatch::getContactDetail | ( | int | n | ) | const [inline] |
void SimTK::ContactPatch::changeFrameInPlace | ( | const Transform & | X_BA | ) | [inline] |
This object is currently in an assumed frame A; given a transform from another frame B to A we'll re-measure and re-express this in B.
This is an expensive operation.