Simbody  3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SimTK::ContactTracker::ConvexImplicitPair Class Reference

This ContactTracker handles contacts between two smooth, convex objects by using their implicit functions. More...

#include <ContactTracker.h>

+ Inheritance diagram for SimTK::ContactTracker::ConvexImplicitPair:

Public Member Functions

 ConvexImplicitPair (ContactGeometryTypeId type1, ContactGeometryTypeId type2)
 
virtual ~ConvexImplicitPair ()
 
virtual bool trackContact (const Contact &priorStatus, const Transform &X_GS1, const ContactGeometry &surface1, const Transform &X_GS2, const ContactGeometry &surface2, Real cutoff, Contact &currentStatus) 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. More...
 
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. More...
 
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. More...
 
- Public Member Functions inherited from SimTK::ContactTracker
 ContactTracker (ContactGeometryTypeId typeOfSurface1, ContactGeometryTypeId typeOfSurface2)
 Base class constructor for use by the concrete classes. More...
 
const std::pair
< ContactGeometryTypeId,
ContactGeometryTypeId > & 
getContactGeometryTypeIds () const
 Return the pair of contact geometry type ids handled by this tracker, in the order that they must be presented to the tracker's methods. More...
 
virtual ~ContactTracker ()
 

Additional Inherited Members

- Static Public Member Functions inherited from SimTK::ContactTracker
static bool refineImplicitPair (const ContactGeometry &shapeA, Vec3 &pointP_A, const ContactGeometry &shapeB, Vec3 &pointQ_B, const Transform &X_AB, Real accuracyRequested, Real &accuracyAchieved, int &numIterations)
 Given two shapes for which implicit functions are known, and a rough-guess contact point for each shape (each measured and expressed in its own surface's frame), refine those contact points to obtain the nearest pair that satisfies contact conditions to a requested accuracy. More...
 
static Vec6 findImplicitPairError (const ContactGeometry &shapeA, const Vec3 &pointP, const ContactGeometry &shapeB, const Vec3 &pointQ, const Transform &X_AB)
 Calculate the error function described in refineImplicitPair(). More...
 
static Mat66 calcImplicitPairJacobian (const ContactGeometry &shapeA, const Vec3 &pointP, const ContactGeometry &shapeB, const Vec3 &pointQ, const Transform &X_AB, const Vec6 &err0)
 Calculate the partial derivatives of the findImplicitPairError() error function with respect to the locations of the two points in their own surface's frame. More...
 
static bool estimateConvexImplicitPairContactUsingMPR (const ContactGeometry &shapeA, const ContactGeometry &shapeB, const Transform &X_AB, Vec3 &pointP_A, Vec3 &pointQ_B, UnitVec3 &dirInA, int &numIterations)
 Use Minkowski Portal Refinement (XenoCollide method by G. More...
 

Detailed Description

This ContactTracker handles contacts between two smooth, convex objects by using their implicit functions.

Create one of these for each possible pair that you want handled this way.

Constructor & Destructor Documentation

virtual SimTK::ContactTracker::ConvexImplicitPair::~ConvexImplicitPair ( )
inlinevirtual

Member Function Documentation

virtual bool SimTK::ContactTracker::ConvexImplicitPair::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::ConvexImplicitPair::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::ConvexImplicitPair::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.


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