Simbody
3.7
|
OBSOLETE – use CircularPointContact or EllipticalPointContact. More...
Public Member Functions | |
PointContact (ContactSurfaceIndex surf1, ContactSurfaceIndex surf2, Vec3 &location, Vec3 &normal, Real radius1, Real radius2, Real depth) | |
Create a PointContact object representing a general (elliptical) contact. More... | |
PointContact (ContactSurfaceIndex surf1, ContactSurfaceIndex surf2, Vec3 &location, Vec3 &normal, Real radius, Real depth) | |
Create a PointContact object representing a circularly symmetric contact. More... | |
Vec3 | getLocation () const |
The location where the two surfaces touch, specified in the ground frame. More... | |
Vec3 | getNormal () const |
Get the surface normal at the contact location. More... | |
Real | getRadiusOfCurvature1 () const |
Get the first principal relative radius of curvature of the contact surface. More... | |
Real | getRadiusOfCurvature2 () const |
Get the second principal relative radius of curvature of the contact surface. More... | |
Real | getEffectiveRadiusOfCurvature () const |
Get the effective relative radius of curvature of the contact surface. More... | |
Real | getDepth () const |
Get the penetration depth. More... | |
Public Member Functions inherited from SimTK::Contact | |
Contact () | |
The default constructor creates an empty handle. More... | |
Contact (const Contact &source) | |
Copy constructor is shallow and reference-counted; this handle will point to the same object as does the source. More... | |
~Contact () | |
Destructor clears the handle, deleting the referenced object if this was the last reference. More... | |
Contact & | operator= (const Contact &source) |
Copy assignment is shallow and reference-counted; this handle will point to the same object as does the source. More... | |
void | clear () |
Clear this handle, deleting the referenced object if this was the last reference. More... | |
bool | isEmpty () const |
See if this handle is empty. More... | |
ContactId | getContactId () const |
Get the persistent ContactId that has been assigned to this Contact object if there is one (otherwise this will be invalid – you can check with isValid(). More... | |
Condition | getCondition () const |
Find out the current condition of this Contact object. More... | |
ContactSurfaceIndex | getSurface1 () const |
Get the first surface involved in the contact, specified by its index within its contact set or ContactTrackerSubsystem. More... | |
ContactSurfaceIndex | getSurface2 () const |
Get the second surface involved in the contact, specified by its index within its contact set or ContactTrackerSubsystem. More... | |
const Transform & | getTransform () const |
Return the transform X_S1S2 giving the pose of surface 2's frame measured and expressed in surface 1's frame, recorded at the time this Contact object was calculated. More... | |
Contact & | setContactId (ContactId id) |
Set the ContactId for this Contact object. More... | |
Contact & | setCondition (Condition condition) |
Set the current Condition. More... | |
Contact & | setSurfaces (ContactSurfaceIndex surf1, ContactSurfaceIndex surf2) |
Set the surfaces tracked by this Contact object. More... | |
Contact & | setTransform (const Transform &X_S1S2) |
Set the surface-to-surface relative transform X_S1S2. More... | |
ContactTypeId | getTypeId () const |
Return a unique small integer corresponding to the concrete type of Contact object being referenced by this handle. More... | |
const ContactImpl & | getImpl () const |
ContactImpl & | updImpl () |
Static Public Member Functions | |
static bool | isInstance (const Contact &contact) |
Determine whether a Contact object is a PointContact. More... | |
static ContactTypeId | classTypeId () |
Obtain the unique small-integer id for the PointContact class. More... | |
Static Public Member Functions inherited from SimTK::Contact | |
static const char * | nameOfCondition (Condition) |
Returns a human-readable name corresponding to the given Condition; useful for debugging. More... | |
static ContactId | createNewContactId () |
This creates a new ContactId starting from 1 and increasing for a very long time (to a billion or so) before repeating. More... | |
Additional Inherited Members | |
Public Types inherited from SimTK::Contact | |
enum | Condition { Unknown, Untracked, Anticipated, NewContact, Ongoing, Broken } |
The Contact::Condition tracks the status of a Contact through its lifetime. More... | |
Protected Member Functions inherited from SimTK::Contact | |
Contact (ContactImpl *impl) | |
OBSOLETE – use CircularPointContact or EllipticalPointContact.
This subclass of Contact represents a symmetric contact centered at a single point, such as between two spheres or a sphere and a half space. It characterizes the contact by the center location and radius of the contact patch, the normal vector, and the penetration depth.
SimTK::PointContact::PointContact | ( | ContactSurfaceIndex | surf1, |
ContactSurfaceIndex | surf2, | ||
Vec3 & | location, | ||
Vec3 & | normal, | ||
Real | radius1, | ||
Real | radius2, | ||
Real | depth | ||
) |
Create a PointContact object representing a general (elliptical) contact.
surf1 | the index of the first surface involved in the contact, specified by its index within its contact set |
surf2 | the index of the second surface involved in the contact, specified by its index within its contact set |
location | the location where the two surfaces touch, specified in the ground frame |
normal | the surface normal at the contact location. This is specified in the ground frame, and points outward from surface1 towards surface2 |
radius1 | the first principal relative radius of curvature of the contact surface |
radius2 | the second principal relative radius of curvature of the contact surface |
depth | the penetration depth |
SimTK::PointContact::PointContact | ( | ContactSurfaceIndex | surf1, |
ContactSurfaceIndex | surf2, | ||
Vec3 & | location, | ||
Vec3 & | normal, | ||
Real | radius, | ||
Real | depth | ||
) |
Create a PointContact object representing a circularly symmetric contact.
surf1 | the index of the first surface involved in the contact, specified by its index within its contact set |
surf2 | the index of the second surface involved in the contact, specified by its index within its contact set |
location | the location where the two surfaces touch, specified in the ground frame |
normal | the surface normal at the contact location. This is specified in the ground frame, and points outward from surface1 towards surface2 |
radius | the relative radius of curvature of the contact surface |
depth | the penetration depth |
Vec3 SimTK::PointContact::getLocation | ( | ) | const |
The location where the two surfaces touch, specified in the ground frame.
More precisely, the contact region is represented as a circular patch centered at this point and perpendicular to the normal vector.
Vec3 SimTK::PointContact::getNormal | ( | ) | const |
Get the surface normal at the contact location.
This is specified in the ground frame, and points outward from surface1 towards surface2.
Real SimTK::PointContact::getRadiusOfCurvature1 | ( | ) | const |
Get the first principal relative radius of curvature of the contact surface.
Real SimTK::PointContact::getRadiusOfCurvature2 | ( | ) | const |
Get the second principal relative radius of curvature of the contact surface.
Real SimTK::PointContact::getEffectiveRadiusOfCurvature | ( | ) | const |
Get the effective relative radius of curvature of the contact surface.
This is equal to sqrt(R1*R2), where R1 and R2 are the principal relative radii of curvature.
Real SimTK::PointContact::getDepth | ( | ) | const |
Get the penetration depth.
This is defined as the minimum distance you would need to translate one surface along the normal vector to make the surfaces no longer overlap.
|
static |
Determine whether a Contact object is a PointContact.
|
static |
Obtain the unique small-integer id for the PointContact class.