Simbody
3.7

(Experimental – API will change – use at your own risk) Define a sphere on each of two bodies. More...
Public Member Functions  
SphereSphereContact (MobilizedBody &mobod_F, const Vec3 &defaultCenterOnF, Real defaultRadiusOnF, MobilizedBody &mobod_B, const Vec3 &defaultCenterOnB, Real defaultRadiusOnB, Real minCOR, Real mu_s, Real mu_d, Real mu_v)  
bool  disable (State &state) const override 
Disable the normal and friction constraints if they were enabled. More...  
bool  enable (State &state) const override 
Enable the normal and friction constraints if they were disabled. More...  
bool  isEnabled (const State &state) const override 
Return true if this contact is enabled. More...  
Vec3  whereToDisplay (const State &state) const override 
This returns a point in the ground frame at which you might want to say the constraint is "located", for purposes of display only. More...  
Real  getPerr (const State &state) const override 
Return the position error for the contact constraint (usually a signed distance function). More...  
Real  getVerr (const State &state) const override 
Return the time derivative of the contact constraint position error. More...  
Real  getAerr (const State &state) const override 
Return the time derivative of the contact constraint velocity error. More...  
Real  calcEffectiveCOR (const State &state, Real defaultCaptureSpeed, Real defaultMinCORSpeed, Real impactSpeed) const override 
Returns the effective coefficient of restitution (COR) for this contact, given an impact speed (a nonnegative scalar). More...  
bool  hasFriction (const State &state) const override 
Returns true if there is a friction constraint associated with this contact constraint. More...  
Vec2  getSlipVelocity (const State &state) const override 
Real  calcEffectiveCOF (const State &state, Real defaultTransitionSpeed, Real slipSpeed) const override 
Returns the effective coefficient of friction mu for this contact, given a relative slip speed (a nonnegative scalar). More...  
MultiplierIndex  getContactMultiplierIndex (const State &s) const override 
Return the multiplier index Simbody assigned for the unilateral contact constraint (for contact, this is the normal constraint). More...  
void  getFrictionMultiplierIndices (const State &s, MultiplierIndex &ix_x, MultiplierIndex &ix_y) const override 
If hasFriction(), this method returns the multipliers used for the x and ydirection friction constraints. More...  
Public Member Functions inherited from SimTK::UnilateralContact  
UnilateralContact (int sign=1)  
The base class constructor allows specification of the sign convention to be used with this constraint. More...  
virtual  ~UnilateralContact () 
Real  getSignConvention () const 
Report the sign convention (1 or 1) supplied at construction. More...  
virtual bool  isProximal (const State &state, Real ptol) const 
Given the position constraint tolerance currently in use, is this contact close enough to contacting that we should treat it as though it is in contact? Normally we just see if sign*perr <= tol, but individual contacts can override this if they want to do some scaling. More...  
virtual Vec3  getPositionInfo (const State &state) const 
TODO: kludge needed because we're misusing existing constraints. More...  
virtual void  setInstanceParameter (State &state, const Vec3 &pos) const 
TODO: kludge to set instance parameters on internal constraints; this should be the same Vec3 you got from getPositionInfo(). More...  
void  setMyIndex (UnilateralContactIndex cx) 
UnilateralContactIndex  getMyIndex () const 
(Experimental – API will change – use at your own risk) Define a sphere on each of two bodies.
This constraint will prevent interpenetration of those spheres, and provide for frictional forces when they are in contact. The resulting contact is parameterized by a coefficient of restitution for impacts in the plane normal direction, and by coefficients of friction for frictional forces in the plane.
SimTK::SphereSphereContact::SphereSphereContact  (  MobilizedBody &  mobod_F, 
const Vec3 &  defaultCenterOnF,  
Real  defaultRadiusOnF,  
MobilizedBody &  mobod_B,  
const Vec3 &  defaultCenterOnB,  
Real  defaultRadiusOnB,  
Real  minCOR,  
Real  mu_s,  
Real  mu_d,  
Real  mu_v  
) 

inlineoverridevirtual 
Disable the normal and friction constraints if they were enabled.
Return true if we actually had to disable something.
Implements SimTK::UnilateralContact.

inlineoverridevirtual 
Enable the normal and friction constraints if they were disabled.
Return true if we actually had to enable something.
Implements SimTK::UnilateralContact.

inlineoverridevirtual 
Return true if this contact is enabled.
Implements SimTK::UnilateralContact.
This returns a point in the ground frame at which you might want to say the constraint is "located", for purposes of display only.
Implements SimTK::UnilateralContact.
Return the position error for the contact constraint (usually a signed distance function).
You have to apply the sign convention to interpret this properly.
Implements SimTK::UnilateralContact.
Return the time derivative of the contact constraint position error.
You have to apply the sign convention to interpret this properly.
Implements SimTK::UnilateralContact.
Return the time derivative of the contact constraint velocity error.
You have to apply the sign convention to interpret this properly.
Implements SimTK::UnilateralContact.

inlineoverridevirtual 
Returns the effective coefficient of restitution (COR) for this contact, given an impact speed (a nonnegative scalar).
For a given pair of contacting materials this is typically a function of just the impact speed, but it could also depend on the time and configuration in state, which should be realized through Stage::Position. The given default impact speed thresholds (also nonnegative) are used to calculate the COR unless this Contact overrides those.
Implements SimTK::UnilateralContact.

inlineoverridevirtual 
Returns true
if there is a friction constraint associated with this contact constraint.
If so, calcEffectiveCOF() must be overridden.
Reimplemented from SimTK::UnilateralContact.
Reimplemented from SimTK::UnilateralContact.

inlineoverridevirtual 
Returns the effective coefficient of friction mu for this contact, given a relative slip speed (a nonnegative scalar).
For a given pair of contacting materials this is typically a function of just the slip speed, but it could also depend on the time and configuration in state, which should be realized through Stage::Position. The given default sliptoroll transition speed threshold (also nonnegative) is used to calculate mu unless this Contact overrides it with its own transition speed.
Reimplemented from SimTK::UnilateralContact.

overridevirtual 
Return the multiplier index Simbody assigned for the unilateral contact constraint (for contact, this is the normal constraint).
If the constraint is not enabled, there is no multiplier and the returned index will be invalid.
Implements SimTK::UnilateralContact.

overridevirtual 
If hasFriction(), this method returns the multipliers used for the x and ydirection friction constraints.
If no friction, or if this constraint is disabled, the returned values are invalid.
Reimplemented from SimTK::UnilateralContact.