|
| Custom (Implementation *implementation) |
| Create a Custom Constraint. More...
|
|
| Custom () |
| Default constructor creates an empty handle. More...
|
|
| SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS (Custom, CustomImpl, Constraint) |
|
| Constraint () |
| Default constructor creates an empty Constraint handle that can be used to reference any Constraint. More...
|
|
| Constraint (ConstraintImpl *r) |
| For internal use: construct a new Constraint handle referencing a particular implementation object. More...
|
|
void | disable (State &) const |
| Disable this Constraint, effectively removing it from the system. More...
|
|
void | enable (State &) const |
| Enable this Constraint, without necessarily satisfying it. More...
|
|
bool | isDisabled (const State &) const |
| Test whether this constraint is currently disabled in the supplied State. More...
|
|
bool | isDisabledByDefault () const |
| Test whether this Constraint is disabled by default in which case it must be explicitly enabled before it will take effect. More...
|
|
void | setDisabledByDefault (bool shouldBeDisabled) |
| Normally Constraints are enabled when defined and can be disabled later. More...
|
|
| operator ConstraintIndex () const |
| This is an implicit conversion from Constraint to ConstraintIndex when needed. More...
|
|
const SimbodyMatterSubsystem & | getMatterSubsystem () const |
| Get a const reference to the matter subsystem that contains this Constraint. More...
|
|
SimbodyMatterSubsystem & | updMatterSubsystem () |
| Assuming you have writable access to this Constraint, get a writable reference to the containing matter subsystem. More...
|
|
ConstraintIndex | getConstraintIndex () const |
| Get the ConstraintIndex that was assigned to this Constraint when it was added to the matter subsystem. More...
|
|
bool | isInSubsystem () const |
| Test whether this Constraint is contained within a matter subsystem. More...
|
|
bool | isInSameSubsystem (const MobilizedBody &mobod) const |
| Test whether the supplied MobilizedBody is in the same matter subsystem as this Constraint. More...
|
|
int | getNumConstrainedBodies () const |
| Return the number of unique bodies directly restricted by this constraint. More...
|
|
const MobilizedBody & | getMobilizedBodyFromConstrainedBody (ConstrainedBodyIndex consBodyIx) const |
| Return a const reference to the actual MobilizedBody corresponding to one of the Constrained Bodies included in the count returned by getNumConstrainedBodies(). More...
|
|
const MobilizedBody & | getAncestorMobilizedBody () const |
| Return a const reference to the actual MobilizedBody which is serving as the Ancestor body for the constrained bodies in this Constraint. More...
|
|
int | getNumConstrainedMobilizers () const |
| Return the number of unique mobilizers directly restricted by this Constraint. More...
|
|
const MobilizedBody & | getMobilizedBodyFromConstrainedMobilizer (ConstrainedMobilizerIndex consMobilizerIx) const |
| Return a const reference to the actual MobilizedBody corresponding to one of the Constrained Mobilizers included in the count returned by getNumConstrainedMobilizers(). More...
|
|
const SimbodyMatterSubtree & | getSubtree () const |
| Return a subtree object indicating which parts of the multibody tree are potentially affected by this Constraint. More...
|
|
int | getNumConstrainedQ (const State &, ConstrainedMobilizerIndex) const |
| Return the number of constrainable generalized coordinates q associated with a particular constrained mobilizer. More...
|
|
int | getNumConstrainedU (const State &, ConstrainedMobilizerIndex) const |
| Return the number of constrainable mobilities u associated with a particular constrained mobilizer. More...
|
|
ConstrainedUIndex | getConstrainedUIndex (const State &, ConstrainedMobilizerIndex, MobilizerUIndex which) const |
| Return the index into the constrained mobilities u array corresponding to a particular mobility of the indicated ConstrainedMobilizer. More...
|
|
ConstrainedQIndex | getConstrainedQIndex (const State &, ConstrainedMobilizerIndex, MobilizerQIndex which) const |
| Return the index into the constrained coordinates q array corresponding to a particular coordinate of the indicated ConstrainedMobilizer. More...
|
|
int | getNumConstrainedQ (const State &) const |
| Return the sum of the number of coordinates q associated with each of the constrained mobilizers. More...
|
|
int | getNumConstrainedU (const State &) const |
| Return the sum of the number of mobilities u associated with each of the constrained mobilizers. More...
|
|
QIndex | getQIndexOfConstrainedQ (const State &state, ConstrainedQIndex consQIndex) const |
| Map one of this Constraint's constrained q's to the corresponding index within the matter subsystem's whole q vector. More...
|
|
UIndex | getUIndexOfConstrainedU (const State &state, ConstrainedUIndex consUIndex) const |
| Map one of this Constraint's constrained U's (or mobilities) to the corresponding index within the matter subsystem's whole u vector. More...
|
|
void | getNumConstraintEquationsInUse (const State &state, int &mp, int &mv, int &ma) const |
| Find out how many holonomic (position), nonholonomic (velocity), and acceleration-only constraint equations are currently being generated by this Constraint. More...
|
|
void | getIndexOfMultipliersInUse (const State &state, MultiplierIndex &px0, MultiplierIndex &vx0, MultiplierIndex &ax0) const |
| Return the start of the blocks of multipliers (or acceleration errors) assigned to this Constraint. More...
|
|
void | setMyPartInConstraintSpaceVector (const State &state, const Vector &myPart, Vector &constraintSpace) const |
| Set the part of a complete constraint-space vector that belongs to this constraint. More...
|
|
void | getMyPartFromConstraintSpaceVector (const State &state, const Vector &constraintSpace, Vector &myPart) const |
| Get the part of a complete constraint-space vector that belongs to this constraint. More...
|
|
Vector | getPositionErrorsAsVector (const State &) const |
| Get a Vector containing the position errors. More...
|
|
Vector | calcPositionErrorFromQ (const State &, const Vector &q) const |
|
Matrix | calcPositionConstraintMatrixP (const State &) const |
|
Matrix | calcPositionConstraintMatrixPt (const State &) const |
|
Matrix | calcPositionConstraintMatrixPNInv (const State &) const |
|
void | calcConstraintForcesFromMultipliers (const State &, const Vector &lambda, Vector_< SpatialVec > &bodyForcesInA, Vector &mobilityForces) const |
| This operator calculates this constraint's body and mobility forces given the complete set of multipliers lambda for this Constraint. More...
|
|
Vector | getVelocityErrorsAsVector (const State &) const |
| Get a Vector containing the velocity errors. More...
|
|
Vector | calcVelocityErrorFromU (const State &, const Vector &u) const |
|
Matrix | calcVelocityConstraintMatrixV (const State &) const |
|
Matrix | calcVelocityConstraintMatrixVt (const State &) const |
|
Vector | getAccelerationErrorsAsVector (const State &) const |
| Get a Vector containing the acceleration errors. More...
|
|
Vector | calcAccelerationErrorFromUDot (const State &, const Vector &udot) const |
|
Vector | getMultipliersAsVector (const State &) const |
| Get a Vector containing the Lagrange multipliers. More...
|
|
void | getConstraintForcesAsVectors (const State &state, Vector_< SpatialVec > &bodyForcesInG, Vector &mobilityForces) const |
| Given a State realized through Acceleration stage, return the forces that were applied to the system by this Constraint, with body forces expressed in Ground. More...
|
|
Vector_< SpatialVec > | getConstrainedBodyForcesAsVector (const State &state) const |
| For convenience, returns constrained body forces as the function return. More...
|
|
Vector | getConstrainedMobilityForcesAsVector (const State &state) const |
| For convenience, returns constrained mobility forces as the function return. More...
|
|
Real | calcPower (const State &state) const |
| Calculate the power being applied by this Constraint to the system. More...
|
|
Matrix | calcAccelerationConstraintMatrixA (const State &) const |
|
Matrix | calcAccelerationConstraintMatrixAt (const State &) const |
|
Public Member Functions inherited from SimTK::PIMPLHandle< Constraint, ConstraintImpl, true > |
bool | isEmptyHandle () const |
| Returns true if this handle is empty, that is, does not refer to any implementation object. More...
|
|
bool | isOwnerHandle () const |
| Returns true if this handle is the owner of the implementation object to which it refers. More...
|
|
bool | isSameHandle (const Constraint &other) const |
| Determine whether the supplied handle is the same object as "this" PIMPLHandle. More...
|
|
void | disown (Constraint &newOwner) |
| Give up ownership of the implementation to an empty handle. More...
|
|
PIMPLHandle & | referenceAssign (const Constraint &source) |
| "Copy" assignment but with shallow (pointer) semantics. More...
|
|
PIMPLHandle & | copyAssign (const Constraint &source) |
| This is real copy assignment, with ordinary C++ object ("value") semantics. More...
|
|
void | clearHandle () |
| Make this an empty handle, deleting the implementation object if this handle is the owner of it. More...
|
|
const ConstraintImpl & | getImpl () const |
| Get a const reference to the implementation associated with this Handle. More...
|
|
ConstraintImpl & | updImpl () |
| Get a writable reference to the implementation associated with this Handle. More...
|
|
int | getImplHandleCount () const |
| Return the number of handles the implementation believes are referencing it. More...
|
|
The handle class Constraint::Custom (dataless) and its companion class Constraint::Custom::Implementation can be used together to define new Constraint types with arbitrary properties.
To use it, create a class that extends Constraint::Custom::Implementation. You can then create an instance of it and pass it to the Constraint::Custom constructor:
Constraint::Custom myConstraint(new MyConstraintImplementation( args ));
Alternatively, you can also create a new Handle class which is a subclass of Constraint::Custom and which creates the Implementation itself in its constructors.
class MyConstraint : public Constraint::Custom {
public:
MyConstraint( args ) : Constraint::Custom(new MyForceImplementation( args )) {
}
}
This allows an end user to simply write
MyConstraint( args );
and not worry about implementation classes or creating objects on the heap. If you do this, your Constraint::Custom subclass must not have any data members or virtual methods. If it does, it will not work correctly. Instead, store all data in the Implementation subclass.