Simbody  3.7
SimTK::PointContact Class Reference

OBSOLETE – use CircularPointContact or EllipticalPointContact. More...

+ Inheritance diagram for SimTK::PointContact:

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...
 
Contactoperator= (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 TransformgetTransform () 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...
 
ContactsetContactId (ContactId id)
 Set the ContactId for this Contact object. More...
 
ContactsetCondition (Condition condition)
 Set the current Condition. More...
 
ContactsetSurfaces (ContactSurfaceIndex surf1, ContactSurfaceIndex surf2)
 Set the surfaces tracked by this Contact object. More...
 
ContactsetTransform (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)
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ PointContact() [1/2]

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.

Parameters
surf1the index of the first surface involved in the contact, specified by its index within its contact set
surf2the index of the second surface involved in the contact, specified by its index within its contact set
locationthe location where the two surfaces touch, specified in the ground frame
normalthe surface normal at the contact location. This is specified in the ground frame, and points outward from surface1 towards surface2
radius1the first principal relative radius of curvature of the contact surface
radius2the second principal relative radius of curvature of the contact surface
depththe penetration depth

◆ PointContact() [2/2]

SimTK::PointContact::PointContact ( ContactSurfaceIndex  surf1,
ContactSurfaceIndex  surf2,
Vec3 location,
Vec3 normal,
Real  radius,
Real  depth 
)

Create a PointContact object representing a circularly symmetric contact.

Parameters
surf1the index of the first surface involved in the contact, specified by its index within its contact set
surf2the index of the second surface involved in the contact, specified by its index within its contact set
locationthe location where the two surfaces touch, specified in the ground frame
normalthe surface normal at the contact location. This is specified in the ground frame, and points outward from surface1 towards surface2
radiusthe relative radius of curvature of the contact surface
depththe penetration depth

Member Function Documentation

◆ getLocation()

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.

◆ getNormal()

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.

◆ getRadiusOfCurvature1()

Real SimTK::PointContact::getRadiusOfCurvature1 ( ) const

Get the first principal relative radius of curvature of the contact surface.

◆ getRadiusOfCurvature2()

Real SimTK::PointContact::getRadiusOfCurvature2 ( ) const

Get the second principal relative radius of curvature of the contact surface.

◆ getEffectiveRadiusOfCurvature()

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.

◆ getDepth()

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.

◆ isInstance()

static bool SimTK::PointContact::isInstance ( const Contact contact)
static

Determine whether a Contact object is a PointContact.

◆ classTypeId()

static ContactTypeId SimTK::PointContact::classTypeId ( )
static

Obtain the unique small-integer id for the PointContact class.


The documentation for this class was generated from the following file: