Unigine::JointPrismatic Class
Header: | #include <UniginePhysics.h> |
Inherits: | Joint |
This class is used to create prismatic joints.
Example#
The following code illustrates connection of two bodies (b0 and b1) using a prismatic joint.
include <UniginePhysics.h>
/* .. */
JointPrismaticPtr joint = JointPrismatic::create(b0, b1);
// setting joint axis coordinates
joint->setWorldAxis(vec3(0.0f, 0.0f, 1.0f));
// setting common joint constraint parameters
joint->setLinearRestitution(0.4f);
joint->setAngularRestitution(0.4f);
joint->setLinearSoftness(0.4f);
joint->setAngularSoftness(0.4f);
// setting linear damping
joint->setLinearDamping(4.0f);
// setting linear limits [-1.5; 1.5]
joint->setLinearLimitFrom(-1.5f);
joint->setLinearLimitTo(1.5f);
// setting number of iterations
joint->setNumIterations(16);
See Also#
Usage examples:
- Creating a Simple Mechanism Using Various Types of Joints
- A set of UnigineScript API samples located in the <UnigineSDK>/data/samples/joints/ folder:
- prismatic_00
- prismatic_01
JointPrismatic Class
Members
static JointPrismaticPtr create ( ) #
Constructor. Creates a prismatic joint with an anchor at the origin of the world coordinates.static JointPrismaticPtr create ( const Ptr<Body> & body0, const Ptr<Body> & body1 ) #
Constructor. Creates a prismatic joint connecting two given bodies. An anchor is placed between centers of mass of the bodies.Arguments
- const Ptr<Body> & body0 - First body to be connected with the joint.
- const Ptr<Body> & body1 - Second body to be connected with the joint.
static JointPrismaticPtr create ( const Ptr<Body> & body0, const Ptr<Body> & body1, const Math::Vec3 & anchor, const Math::vec3 & size ) #
Constructor. Creates a prismatic joint connecting two given bodies with specified axis coordinates and an anchor placed at specified coordinates.Arguments
- const Ptr<Body> & body0 - First body to be connected with the joint.
- const Ptr<Body> & body1 - Second body to be connected with the joint.
- const Math::Vec3 & anchor - Anchor coordinates.
- const Math::vec3 & size - Axis coordinates.
void setAxis0 ( const Math::vec3 & axis0 ) #
Sets a joint axis in the local coordinates of the first body.Arguments
- const Math::vec3 & axis0 - Joint axis in the coordinates of the first body.
Math::vec3 getAxis0 ( ) #
Returns the joint axis in the local coordinates of the first body.Return value
Joint axis in the coordinates of the first body.float getCurrentLinearDistance ( ) #
Returns the current distance between the bodies.Return value
Current distance in units.float getCurrentLinearVelocity ( ) #
Returns the current velocity of the attached motor.Return value
Current velocity in units per second.void setLinearDamping ( float damping ) #
Sets a linear damping of the joint.Arguments
- float damping - Linear damping. If a negative value is provided, 0 will be used instead.
float getLinearDamping ( ) #
Returns the linear damping of the joint.Return value
Linear damping.void setLinearDistance ( float distance ) #
Sets a target distance of the attached spring. The spring tries to move the connected bodies so that to keep this distance between them.Arguments
- float distance - Target distance in units.
float getLinearDistance ( ) #
Returns the target distance of the attached spring. The spring tries to move the connected bodies so that to keep this distance between them.Return value
Target distance in units.void setLinearForce ( float force ) #
Sets a maximum force of the attached motor.Arguments
- float force - Maximum force. If a negative value is provided, 0 will be used instead. 0 detaches the motor.
float getLinearForce ( ) #
Returns the maximum force of the attached motor. 0 means that the motor is not attached.Return value
Maximum force.void setLinearLimitFrom ( float from ) #
Sets a low limit distance. This limit specifies how far a connected body can move along the joint axis.Arguments
- float from - Distance in units.
float getLinearLimitFrom ( ) #
Returns the low limit distance. This limit specifies how far a connected body can move along the joint axis.Return value
Low limit distance in units.void setLinearLimitTo ( float to ) #
Sets a high limit distance. This limit specifies how far a connected body can move along the joint axis.Arguments
- float to - Distance in units.
float getLinearLimitTo ( ) #
Returns the high limit distance. This limit specifies how far a connected body can move along the joint axis.Return value
High limit distance in units.void setLinearSpring ( float spring ) #
Sets a rigidity coefficient of the spring.Arguments
- float spring - Rigidity coefficient. If a negative value is provided, 0 will be used instead. 0 detaches the spring.
float getLinearSpring ( ) #
Returns the rigidity coefficient of the spring. 0 means that the spring is not attached.Return value
Rigidity coefficient.void setLinearVelocity ( float velocity ) #
Sets a target velocity of the attached motor.Arguments
- float velocity - Target velocity in units per second.
float getLinearVelocity ( ) #
Returns the target velocity of the attached motor.Return value
Target velocity in units per second.void setRotation0 ( const Math::mat3 & rotation0 ) #
Sets a rotation matrix of the anchor point in a system of coordinates of the first connected body.Arguments
- const Math::mat3 & rotation0 - Rotation matrix in the body coordinate space.
Math::mat3 getRotation0 ( ) #
void setRotation1 ( const Math::mat3 & rotation1 ) #
Sets a rotation matrix of the anchor point in a system of coordinates of the second connected body.Arguments
- const Math::mat3 & rotation1 - Rotation matrix in the body coordinate space.
Math::mat3 getRotation1 ( ) #
void setWorldAxis ( const Math::vec3 & axis ) #
Sets a joint axis in the world coordinates.Arguments
- const Math::vec3 & axis - Joint axis in the world coordinates.
Math::vec3 getWorldAxis ( ) #
Returns the joint axis in the world coordinates.Return value
Joint axis in the world coordinates.void setWorldRotation ( const Math::mat3 & rotation ) #
Sets a rotation matrix of the anchor point in the world system of coordinates.Arguments
- const Math::mat3 & rotation - Rotation matrix in the world coordinate space.
Math::mat3 getWorldRotation ( ) #
Last update:
2020-11-24
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)