Simbody
3.6

This subclass of Contact represents a contact between two nonconforming surfaces 1 and 2 that initially meet at a point where each surface has a uniform radius of curvature in all directions (R1 and R2), like a sphere (inside or outside) or a halfspace, resulting in a contact region with circular symmetry. More...
Public Member Functions  
CircularPointContact (ContactSurfaceIndex surf1, Real radius1, ContactSurfaceIndex surf2, Real radius2, const Transform &X_S1S2, Real radius, Real depth, const Vec3 &origin_S1, const UnitVec3 &normal_S1)  
Create a CircularPointContact object. More...  
Real  getRadius1 () const 
Get the radius of surface1 at the contact point. More...  
Real  getRadius2 () const 
Get the radius of surface2 at the contact point. More...  
Real  getEffectiveRadius () const 
Get the precalculated effective radius R at the contact point, where R=1/(1/R1+1/R2). More...  
Real  getDepth () const 
Get the penetration depth (>0) or separation distance (<0), also known as the "approach". More...  
const Vec3 &  getOrigin () const 
Get the origin OP of the contact patch frame P, in S1. More...  
const UnitVec3 &  getNormal () const 
Get the z axis of the contact patch frame, which is the common surface normal at the initial contact point, pointing outward from surface1 towards surface2 at initial contact. 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 referencecounted; 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 referencecounted; 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 surfacetosurface 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 CircularPointContact. More...  
static const CircularPointContact &  getAs (const Contact &contact) 
static CircularPointContact &  updAs (Contact &contact) 
static ContactTypeId  classTypeId () 
Get the unique smallinteger id for the CircularPointContact class. More...  
Static Public Member Functions inherited from SimTK::Contact  
static const char *  nameOfCondition (Condition) 
Returns a humanreadable 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)  
This subclass of Contact represents a contact between two nonconforming surfaces 1 and 2 that initially meet at a point where each surface has a uniform radius of curvature in all directions (R1 and R2), like a sphere (inside or outside) or a halfspace, resulting in a contact region with circular symmetry.
One of the objects may be concave, with negative curvature, as long as the two objects are not conforming.
The undeformed geometry is characterized here by the effective radius R=1/(1/R1+1/R2), a normal vector z defining the penetration direction, a scalar penetration depth d (d>0 when surfaces overlap), and a patch origin point OP located centered on the patch normal such that each undeformed surface is d/2 up or down the normal from OP.
SimTK::CircularPointContact::CircularPointContact  (  ContactSurfaceIndex  surf1, 
Real  radius1,  
ContactSurfaceIndex  surf2,  
Real  radius2,  
const Transform &  X_S1S2,  
Real  radius,  
Real  depth,  
const Vec3 &  origin_S1,  
const UnitVec3 &  normal_S1  
) 
Create a CircularPointContact object.
surf1  the index of the first surface involved in the contact 
radius1  surf1's uniform radius at the contact initiation point 
surf2  the index of the second surface involved in the contact 
radius2  surf2's uniform radius at the contact initiation point 
X_S1S2  the surfacetosurface relative transform 
radius  the effective combined radius to use 
depth  the penetration depth d (>0) or separation distance (<0); surfaces are at +/ d/2 from the origin, up and down the normal 
origin_S1  origin point for the contact patch frame, in S1 
normal_S1  the common normal at onset, pointing from surface1 to surface2, expressed in S1. This is the z axis of the patch frame. 
Real SimTK::CircularPointContact::getRadius1  (  )  const 
Get the radius of surface1 at the contact point.
Real SimTK::CircularPointContact::getRadius2  (  )  const 
Get the radius of surface2 at the contact point.
Real SimTK::CircularPointContact::getEffectiveRadius  (  )  const 
Get the precalculated effective radius R at the contact point, where R=1/(1/R1+1/R2).
Real SimTK::CircularPointContact::getDepth  (  )  const 
Get the penetration depth (>0) or separation distance (<0), also known as the "approach".
This is defined as the minimum distance you would need to translate surface2 along the normal vector to make the surfaces just touch at their contact points without overlap.
const Vec3& SimTK::CircularPointContact::getOrigin  (  )  const 
Get the origin OP of the contact patch frame P, in S1.
const UnitVec3& SimTK::CircularPointContact::getNormal  (  )  const 
Get the z axis of the contact patch frame, which is the common surface normal at the initial contact point, pointing outward from surface1 towards surface2 at initial contact.
This is a unit vector expressed in S1.

static 
Determine whether a Contact object is a CircularPointContact.

inlinestatic 

inlinestatic 

static 
Get the unique smallinteger id for the CircularPointContact class.