Class NewtonEulerJointR#
Defined in Program listing for file mechanics/src/joints/NewtonEulerJointR.hpp
-
class NewtonEulerJointR : public NewtonEulerR#
This class implements an abstract Joint relation (articulation) between one or two Newton/Euler dynamical systems.
Subclassed by CouplerJointR, CylindricalJointR, FixedJointR, KneeJointR, PrismaticJointR
Public Functions
-
inline NewtonEulerJointR()#
Empty constructor.
The relation may be initialized later by setPoint, setAbsolute, and setBasePositions.
-
inline void setPoint(unsigned int index, SP::SiconosVector point)#
Set a point for this joint.
The role of each point is specific to the joint subclass. Won’t take effect until setBasePositions is called.
- Parameters:
index – The index of the points.
point – A SiconosVector of size 3.
-
inline SP::SiconosVector point(unsigned int index)#
Get a point for this joint.
- Parameters:
index – The index of the point.
- Returns:
The requested point.
-
inline VectorOfVectors &points()#
Get the vector of points for this joint.
- Returns:
The vector of points.
-
inline void setAxis(unsigned int index, SP::SiconosVector axis)#
Set an axis for this joint.
The role of each axis is specific to the joint subclass. Won’t take effect until setBasePositions is called.
- Parameters:
index – The index of the points.
axis – A SiconosVector of size 3.
-
inline SP::SiconosVector axis(unsigned int index)#
Get an axis for this joint.
- Parameters:
index – The index of the point.
- Returns:
The requested axis.
-
inline VectorOfVectors &axes()#
Get the vector of axes for this joint.
- Returns:
The vector of axes.
-
inline void setAbsolute(bool absoluteRef)#
Set whether points and axes should be interpreted in absolute or relative frame.
Won’t take effect until setBasePositions is called.
- Parameters:
absoluteRef – true for absolute frame, false for relative frame.
-
inline bool absolute()#
Get whether points and axes are interpreted in absolute or relative frame.
- Returns:
True for absolute frame, false for relative frame.
-
virtual void setBasePositions(SP::SiconosVector q1, SP::SiconosVector q2 = SP::SiconosVector()) = 0#
Initialize the joint constants based on the provided base positions.
- Parameters:
q1 – A SiconosVector of size 7 indicating translation and orientation in inertial coordinates.
q2 – An optional SiconosVector of size 7 indicating translation and orientation; if null, the inertial frame will be considered as the second base.
-
inline virtual void computehDoF(double time, const BlockVector &q0, SiconosVector &y, unsigned int axis = 0)#
Compute the vector of linear and angular positions of the free axes.
-
inline virtual void computeJachqDoF(double time, Interaction &inter, SP::BlockVector q0, SimpleMatrix &jachq, unsigned int axis = 0)#
Compute the jacobian of linear and angular DoF with respect to some q.
-
void projectVectorDoF(const SiconosVector &v, const BlockVector &q0, SiconosVector &ans, int axis, bool absoluteRef = true)#
Project a vector onto the given 0-indexed free axis.
Useful for calculating velocities in the axis, or for calculating axis-aligned forces applied to connected bodies. If axis is of angular type (see typeOfDoF), then the projection is onto the axis of rotation.
- Parameters:
v – The vector to project
q0 – The state q of one or more NewtonEulerDS
ans – The vector to receive the projection.
absoluteRef – If true, v and ans are in the inertial frame, otherwise the q1 frame is assumed.
-
void normalDoF(SiconosVector &ans, const BlockVector &q0, int axis, bool absoluteRef = true)#
Retrieve a normal in the direction of a 0-indexed free axis.
Useful for calculating velocities in the axis, or for calculating axis-aligned forces applied to connected bodies. If axis is of angular type (see typeOfDoF), then the returned normal is the axis of rotation.
- Parameters:
ans – The vector to receive the projection.
q0 – The state q of one or more NewtonEulerDS
axis –
absoluteRef – If true, ans is in the inertial frame, otherwise the q1 frame is assumed.
-
inline bool allowSelfCollide()#
Return the value of the _allowSelfCollide flag.
-
inline void setAllowSelfCollide(bool x)#
Set the value of the _allowSelfCollide flag.
-
virtual unsigned int numberOfConstraints() = 0#
Get the number of constraints defined in the joint.
- Returns:
the number of constraints
-
virtual unsigned int numberOfDoF() = 0#
Return the number of degrees of freedom of this joint.
- Returns:
the number of degrees of freedom (DoF)
-
inline NewtonEulerJointR()#