AGX Dynamics 2.41.1.2
Loading...
Searching...
No Matches
agxUtil::ConstraintHolder Class Reference

Utility class to hold custom implementations of constraints. More...

#include <agxUtil.h>

+ Inheritance diagram for agxUtil::ConstraintHolder:

Public Member Functions

 ConstraintHolder ()
 
bool add (agx::ConstraintImplementation *constraint)
 Add 'interface less' constraint implementation.
 
void clear ()
 Remove all constraints.
 
bool remove (agx::ConstraintImplementation *constraint)
 Remove constraint implementation.
 
- Public Member Functions inherited from agx::Constraint
agx::Bool addElementaryConstraint (const agx::Name &name, agx::ElementaryConstraint *elementaryConstraint)
 Add elementary constraint (like Spherical, Dot1, Dot2 etc) given name.
 
agx::Bool addSecondaryConstraint (const agx::Name &name, agx::ElementaryConstraint *secondaryConstraint)
 Add secondary constraint (like motor, range and/or lock etc) given name.
 
 AGXSTREAM_DECLARE_ABSTRACT_SERIALIZABLE (agx::Constraint)
 
template<typename T >
T * as ()
 Try to do dynamic_cast on the constraint and return a pointer to the casted constraint.
 
template<typename T >
const T * as () const
 Try to do dynamic_cast on the constraint and return a pointer to the casted constraint.
 
RealVector calculateCurrentViolation () const
 Calculates the current violation of the ordinary degrees of freedom of this constraint, e.g., three translational and two rotational (total 5 elements) of a hinge, i.e., controllers DOF are not included.
 
agx::UInt calculateNumActiveRows () const
 Calculates the current number of active rows, including both elementary and secondary constraints.
 
template<typename T >
ref_ptr< T > createFromBody (Vec3 bodyPoint, Vec3 bodyAxis, RigidBody *rb1, RigidBody *rb2)
 
template<typename T >
ref_ptr< T > createFromWorld (Vec3 worldPoint, Vec3 worldAxis, RigidBody *rb1, RigidBody *rb2)
 
agx::AttachmentgetAttachment (agx::UInt i) const
 
agx::RigidBodyAttachmentgetAttachment (const agx::RigidBody *rb) const
 
agx::AttachmentPairgetAttachmentPair () const
 
agx::RigidBodygetBodyAt (agx::UInt i)
 
const agx::RigidBodygetBodyAt (agx::UInt i) const
 
virtual agx::Real getCompliance (agx::UInt dof) const
 Get the compliance for DOF i.
 
agx::Real getCurrentForce (agx::UInt dof) const
 Consider using getLastForce instead.
 
virtual Real getDamping (agx::UInt dof) const
 Get the damping for DOF dof.
 
virtual agx::Real getElasticity (agx::UInt dof) const
 Get the elasticity for DOF i.
 
agx::ElementaryConstraintgetElementaryConstraint (const agx::UInt index) const
 
agx::ElementaryConstraintgetElementaryConstraintGivenName (const agx::Name &name) const
 Find elementary constraint given name.
 
agx::Bool getEnable () const
 
agx::Bool getEnableComputeForces () const
 
bool getEnableDebugRendering () const
 
bool getEnableLinearization () const
 
agx::UInt32 getEntityId () const
 
agx::RangeReal getForceRange (agx::UInt dof=0) const
 Get the force range for DOF dof.
 
agx::Bool getLastForce (agx::UInt bodyIndex, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body with bodyIndex.
 
agx::Bool getLastForce (const agx::RigidBody *rb, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body rb.
 
agx::Bool getLastLocalForce (agx::UInt bodyIndex, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body with bodyIndex.
 
agx::Bool getLastLocalForce (const agx::RigidBody *rb, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body rb.
 
agx::UInt getNumBodies () const
 returns the number of bodies involved
 
virtual int getNumDOF () const =0
 
agx::UInt getNumElementaryConstraints () const
 
agx::UInt getNumSecondaryConstraints () const
 
virtual agx::RegularizationParametersgetRegularizationParameters (agx::UInt i)
 
virtual const agx::RegularizationParametersgetRegularizationParameters (agx::UInt i) const
 
agx::ConstraintImplementationgetRep ()
 
const agx::ConstraintImplementationgetRep () const
 
agx::ElementaryConstraintgetSecondaryConstraint (const agx::UInt index) const
 
agx::ElementaryConstraintgetSecondaryConstraintGivenName (const agx::Name &name) const
 Find secondary constraint given name.
 
agx::Constraint::SolveType getSolveType () const
 
agx::Bool getValid () const
 
agx::Bool isEnabled () const
 
virtual agx::Bool rebind ()
 Rebind this constraint, i.e., use current state as the initial configuration.
 
agx::Bool removeElementaryConstraint (agx::ElementaryConstraint *elementaryConstraint)
 Remove elementary constraint.
 
agx::Bool removeElementaryConstraint (const agx::Name &name)
 Remove elementary constraint.
 
agx::Bool removeSecondaryConstraint (agx::ElementaryConstraint *secondaryConstraint)
 Remove secondary constraint.
 
agx::Bool removeSecondaryConstraint (const agx::Name &name)
 Remove secondary constraint.
 
virtual void render (class agxRender::RenderManager *mgr, float scale) const =0
 Inherited method of how to render this constraint into DebugRenderer.
 
void restore (agxStream::InputArchive &in) override
 
virtual void restoreLightData (agxStream::StorageStream &str) override
 
void setCompliance (agx::Real compliance)
 Set the compliance of this constraint for all DOFs.
 
virtual void setCompliance (agx::Real compliance, agx::Int dof)
 Set the compliance of this constraint for the i:th DOF.
 
void setDamping (agx::Real damping)
 Set the damping of this constraint for all DOFs.
 
virtual void setDamping (agx::Real damping, agx::Int dof)
 Set the damping of this constraint for the i:th DOF.
 
virtual void setElasticity (agx::Real elasticity)
 Set the elasticity of this constraint for all DOFs.
 
virtual void setElasticity (agx::Real elasticity, agx::Int dof)
 Set the elasticity of this constraint for the i:th DOF.
 
virtual void setEnable (agx::Bool enable)
 Enable/disable a constraint.
 
void setEnableComputeForces (agx::Bool enable)
 Enable (or disable) computation of the forces applied to the dynamic bodies in this constraint.
 
void setEnableDebugRendering (agx::Bool enable)
 Enable/disable debug rendering of this constraint.
 
void setEnableLinearization (bool enable)
 Pass true to enable linearization of constraint compliance.
 
void setForceRange (agx::RangeReal forceRange)
 Assign force range for all DOF of the elementary constraints.
 
void setForceRange (agx::RangeReal forceRange, agx::Int dof)
 Assign force range, of an elementary constraint, for a given DOF.
 
void setForceRange (agx::Real lower, agx::Real upper, agx::Int dof)
 Assign force range, of an elementary constraint, for a given DOF.
 
void setSolveType (agx::Constraint::SolveType solveType)
 Specify the solve type for this constraint.
 
void store (agxStream::OutputArchive &out) const override
 
virtual void storeLightData (agxStream::StorageStream &str) const override
 
- Public Member Functions inherited from agx::Interaction
 Interaction ()
 Default constructor.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agx::Interaction)
 
const agx::NamegetName () const
 
agx::PropertyContainergetPropertyContainer ()
 
const agx::PropertyContainergetPropertyContainer () const
 
agxSDK::SimulationProxygetSimulationProxy () const
 
agx::Bool hasPropertyContainer () const
 
virtual void postSystemCallback (agx::DynamicsSystem *)
 Called after all post step events, after solve.
 
virtual void preSystemCallback (agx::DynamicsSystem *)
 Called after all pre step events, before solve.
 
void setName (const agx::Name &name)
 Name this interaction.
 
void setPropertyContainer (agx::PropertyContainer *propertyContainer)
 Assign a new property container.
 
virtual void updateForce (agx::DynamicsSystem *dynamicsSystem)
 This virtual method is implemented so that it computes the interaction forces on all the physical bodies implicated.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 

Protected Member Functions

virtual ~ConstraintHolder ()
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxUtil::ConstraintHolder)
 
virtual int getNumDOF () const override
 
virtual void render (class agxRender::RenderManager *, float) const override
 Inherited method of how to render this constraint into DebugRenderer.
 
- Protected Member Functions inherited from agx::Constraint
 Constraint ()
 
virtual ~Constraint ()
 
virtual void addNotification () override
 Called when added to a simulation.
 
virtual void postSystemCallback (agx::DynamicsSystem *dynamicsSystem) override
 Called after all post step events, after solve.
 
virtual void preSystemCallback (agx::DynamicsSystem *dynamicsSystem) override
 Called after all pre step events, before solve.
 
virtual void removeNotification () override
 Called when removed from a simulation.
 
void setRep (agx::ConstraintImplementation *_rep)
 
virtual void setSimulation (agxSDK::Simulation *simulation) override
 Assign simulation.
 
virtual void setSystem (agx::DynamicsSystem *)
 
- Protected Member Functions inherited from agx::Interaction
virtual ~Interaction ()
 Reference counted object, protected destructor.
 
virtual void addNotification ()
 Called when added to a simulation.
 
virtual void removeNotification ()
 Called when removed from a simulation.
 
virtual void setSimulation (agxSDK::Simulation *simulation)
 Assign simulation.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 

Static Protected Member Functions

static agxStream::Serializablecreate (agxStream::InputArchive &)
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 

Additional Inherited Members

- Public Types inherited from agx::Constraint
enum  SolveType { DIRECT = 1 , ITERATIVE = (1<<2) , DIRECT_AND_ITERATIVE = (DIRECT | ITERATIVE) }
 Specifies in what solvers the constraint will be solved. More...
 
- Static Public Member Functions inherited from agx::Constraint
static agx::Bool calculateFramesFromBody (agx::Vec3 bodyPoint, agx::Vec3 bodyAxis, agx::Vec3 secondBodyAxis, const agx::RigidBody *body, agx::Frame *bodyFrame, const agx::RigidBody *otherBody, agx::Frame *otherFrame)
 Calculates the constraint attachment frames given point and axes in body coordinates of body.
 
static agx::Bool calculateFramesFromBody (agx::Vec3 bodyPoint, agx::Vec3 bodyAxis, const agx::RigidBody *body, agx::Frame *bodyFrame, const agx::RigidBody *otherBody, agx::Frame *otherFrame)
 Calculates the constraint attachment frames given point and axis in body coordinates of body.
 
static agx::Bool calculateFramesFromWorld (agx::Vec3 worldPoint, agx::Vec3 worldAxis, agx::Vec3 secondWorldAxis, const agx::RigidBody *rb1, agx::Frame *rb1Frame, const agx::RigidBody *rb2, agx::Frame *rb2Frame)
 Given a point and two axes in world, this function calculates each local attachment frame for one or two bodies.
 
static agx::Bool calculateFramesFromWorld (agx::Vec3 worldPoint, agx::Vec3 worldAxis, const agx::RigidBody *rb1, agx::Frame *rb1Frame, const agx::RigidBody *rb2, agx::Frame *rb2Frame)
 Given a point and an axis in world, this function calculates each local attachment frame for one or two bodies.
 
template<typename T >
static agx::ref_ptr< T > createFromBody (agx::Vec3 bodyPoint, agx::Vec3 bodyAxis, agx::RigidBody *rb1, agx::RigidBody *rb2=nullptr)
 Creates a constraint given a point and an axis in rb1 model frame.
 
template<typename T >
static agx::ref_ptr< T > createFromWorld (agx::Vec3 worldPoint, agx::Vec3 worldAxis, agx::RigidBody *rb1, agx::RigidBody *rb2=nullptr)
 Creates a constraint given a point and an axis in world frame.
 
- Static Public Member Functions inherited from agx::Interaction
static agxStream::Serializablecreate (agxStream::InputArchive &)
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 
- Protected Attributes inherited from agx::Constraint
agx::ConstraintImplementationm_implementation
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

Utility class to hold custom implementations of constraints.

Add this constraint to a simulation then by adding implementation to this holder the implementations makes it to the solver.

Definition at line 524 of file agxUtil.h.

Constructor & Destructor Documentation

◆ ConstraintHolder()

agxUtil::ConstraintHolder::ConstraintHolder ( )

◆ ~ConstraintHolder()

virtual agxUtil::ConstraintHolder::~ConstraintHolder ( )
protectedvirtual

Member Function Documentation

◆ add()

bool agxUtil::ConstraintHolder::add ( agx::ConstraintImplementation constraint)

Add 'interface less' constraint implementation.

This constraint will be added to the solver.

Parameters
constraint- constraint to add
Returns
true if add were successful - otherwise false

◆ AGXSTREAM_DECLARE_SERIALIZABLE_BASE()

agxUtil::ConstraintHolder::AGXSTREAM_DECLARE_SERIALIZABLE_BASE ( agxUtil::ConstraintHolder  )
protected

◆ clear()

void agxUtil::ConstraintHolder::clear ( )

Remove all constraints.

◆ create()

static agxStream::Serializable * agxUtil::ConstraintHolder::create ( agxStream::InputArchive )
inlinestaticprotected

Definition at line 559 of file agxUtil.h.

◆ getNumDOF()

virtual int agxUtil::ConstraintHolder::getNumDOF ( ) const
inlineoverrideprotectedvirtual
Returns
the number of DOF for this constraint, not including secondary constraints. -1 if num DOF is undefined for the constraint.

Implements agx::Constraint.

Definition at line 552 of file agxUtil.h.

◆ remove()

bool agxUtil::ConstraintHolder::remove ( agx::ConstraintImplementation constraint)

Remove constraint implementation.

Parameters
constraint- constraint to remove
Returns
true if the constraint was actually removed - otherwise false

◆ render()

virtual void agxUtil::ConstraintHolder::render ( class agxRender::RenderManager mgr,
float  scale 
) const
inlineoverrideprotectedvirtual

Inherited method of how to render this constraint into DebugRenderer.

Implements agx::Constraint.

Definition at line 556 of file agxUtil.h.


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