AGX Dynamics 2.40.0.0
Loading...
Searching...
No Matches
agx::Prismatic Class Reference

A prismatic joint keeps a fixed relative orientation between the attached bodies but allows them to slide along a given axis. More...

#include <Prismatic.h>

+ Inheritance diagram for agx::Prismatic:

Public Types

enum  DOF {
  ALL_DOF = -1 , ROTATIONAL_1 = 0 , ROTATIONAL_2 = 1 , ROTATIONAL_3 = 2 ,
  TRANSLATIONAL_1 = 3 , TRANSLATIONAL_2 = 4 , NUM_DOF = 5
}
 Enum used for specifying which Degree of Freedom (DOF) that should be accessed in calls to for example: constraint->getRegularizationParameters( dof ); constraint->setDamping( damping, dof );. More...
 
- 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...
 

Public Member Functions

 Prismatic (const PrismaticFrame &pf, RigidBody *rb1, RigidBody *rb2=0)
 Create a Prismatic joint given a prismatic frame (world coordinates) and one or two rigid bodies.
 
 Prismatic (const Vec3 &axis, RigidBody *rb1, RigidBody *rb2=nullptr)
 Create a Prismatic joint given the prismatic axis and one or two rigid bodies.
 
 Prismatic (RigidBody *rb1, Frame *rb1AttachmentFrame, RigidBody *rb2=nullptr, Frame *rb2AttachmentFrame=nullptr)
 Create a Prismatic joint given attachment frames and one or two rigid bodies.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agx::Prismatic)
 
virtual int getNumDOF () const override
 
- Public Member Functions inherited from agx::Constraint1DOF
agx::Real getAngle () const
 This method return the current angle for the 1D constraint.
 
agx::Real getCurrentSpeed () const
 This methods return the current speed for the 1D constraint.
 
agx::ElectricMotorControllergetElectricMotorController ()
 
const agx::ElectricMotorControllergetElectricMotorController () const
 
agx::FrictionControllergetFrictionController ()
 
const agx::FrictionControllergetFrictionController () const
 
agx::Lock1DgetLock1D ()
 
const agx::Lock1DgetLock1D () const
 
agx::Motor1DgetMotor1D ()
 
const agx::Motor1DgetMotor1D () const
 
agx::Range1DgetRange1D ()
 
const agx::Range1DgetRange1D () const
 
- 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.
 

Static Public Member Functions

static agxStream::Serializablecreate (agxStream::InputArchive &)
 
- Static Public Member Functions inherited from agx::Constraint1DOF
static agx::Constraint1DOFsafeCast (const agx::Constraint *constraint)
 Utility method for not so type safe languages.
 
- 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 Member Functions

 Prismatic ()
 
virtual ~Prismatic ()
 
virtual void render (agxRender::RenderManager *mgr, float scale) const override
 Used internally for debug rendering.
 
- Protected Member Functions inherited from agx::Constraint1DOF
 Constraint1DOF ()
 
virtual ~Constraint1DOF ()
 
- 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 ()
 

Additional Inherited Members

- 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.
 
- 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

A prismatic joint keeps a fixed relative orientation between the attached bodies but allows them to slide along a given axis.

Hydraulics and elevators are examples of using a Prismatic constraint.

Definition at line 66 of file Prismatic.h.

Member Enumeration Documentation

◆ DOF

Enum used for specifying which Degree of Freedom (DOF) that should be accessed in calls to for example: constraint->getRegularizationParameters( dof ); constraint->setDamping( damping, dof );.

Enumerator
ALL_DOF 

Select all degrees of freedom.

ROTATIONAL_1 

Select DOF corresponding to the first rotational axis.

ROTATIONAL_2 

Select DOF corresponding to the second rotational axis.

ROTATIONAL_3 

Select DOF for rotation around Z-axis.

TRANSLATIONAL_1 

Select DOF for the first translational axis.

TRANSLATIONAL_2 

Select DOF for the second translational axis.

NUM_DOF 

Number of DOF available for this constraint.

Definition at line 100 of file Prismatic.h.

Constructor & Destructor Documentation

◆ Prismatic() [1/4]

agx::Prismatic::Prismatic ( const PrismaticFrame pf,
RigidBody rb1,
RigidBody rb2 = 0 
)

Create a Prismatic joint given a prismatic frame (world coordinates) and one or two rigid bodies.

Parameters
pf- Prismatic frame, defining the prismatic axis and attach point
rb1- First rigid body (invalid if null)
rb2- Second rigid body (if null, first rigid body will be attached in world)

◆ Prismatic() [2/4]

agx::Prismatic::Prismatic ( RigidBody rb1,
Frame rb1AttachmentFrame,
RigidBody rb2 = nullptr,
Frame rb2AttachmentFrame = nullptr 
)

Create a Prismatic joint given attachment frames and one or two rigid bodies.

An attachment is frame relative its body with the prismatic axis point in the z-direction.

Parameters
rb1- First rigid body (invalid if null)
rb1AttachmentFrame- First attachment frame (invalid if null)
rb2- Second rigid body (if null, first rigid body will be attached in world)
rb2AttachmentFrame- Second attachment frame

◆ Prismatic() [3/4]

agx::Prismatic::Prismatic ( const Vec3 axis,
RigidBody rb1,
RigidBody rb2 = nullptr 
)

Create a Prismatic joint given the prismatic axis and one or two rigid bodies.

Parameters
axis- Prismatic axis given in world coordinates
rb1- Fist rigid body (invalid if null)
rb2- Second rigid body (if null, first rigid body will be attached in world)

◆ Prismatic() [4/4]

agx::Prismatic::Prismatic ( )
protected

◆ ~Prismatic()

virtual agx::Prismatic::~Prismatic ( )
protectedvirtual

Member Function Documentation

◆ AGXSTREAM_DECLARE_SERIALIZABLE_BASE()

agx::Prismatic::AGXSTREAM_DECLARE_SERIALIZABLE_BASE ( agx::Prismatic  )

◆ create()

static agxStream::Serializable * agx::Prismatic::create ( agxStream::InputArchive )
inlinestatic

Definition at line 115 of file Prismatic.h.

◆ getNumDOF()

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

Implements agx::Constraint.

◆ render()

virtual void agx::Prismatic::render ( agxRender::RenderManager mgr,
float  scale 
) const
overrideprotectedvirtual

Used internally for debug rendering.

Implements agx::Constraint.


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