# Unigine::JointPrismatic Class

This class is used to create prismatic joints.

### Example#

The following code illustrates connection of two bodies (b0 and b1) using a prismatic joint.

Source code (C++)
``````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);``````

Usage examples:

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

## Ptr<JointPrismatic>cast( const Ptr<Joint> & joint )

Casts a JointPrismatic out of the Joint instance.

### Arguments

• const Ptr<Joint> & joint - Joint instance.

JointPrismatic.

## voidsetAxis0( 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::vec3getAxis0( )

Returns the joint axis in the local coordinates of the first body.

### Return value

Joint axis in the coordinates of the first body.

## floatgetCurrentLinearDistance( )

Returns the current distance between the bodies.

### Return value

Current distance in units.

## floatgetCurrentLinearVelocity( )

Returns the current velocity of the attached motor.

### Return value

Current velocity in units per second.

## voidsetLinearDamping( 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.

## floatgetLinearDamping( )

Returns the linear damping of the joint.

Linear damping.

## voidsetLinearDistance( 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.

## floatgetLinearDistance( )

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.

## voidsetLinearForce( 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.

## floatgetLinearForce( )

Returns the maximum force of the attached motor. 0 means that the motor is not attached.

Maximum force.

## voidsetLinearLimitFrom( 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.

## floatgetLinearLimitFrom( )

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.

## voidsetLinearLimitTo( 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.

## floatgetLinearLimitTo( )

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.

## voidsetLinearSpring( 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.

## floatgetLinearSpring( )

Returns the rigidity coefficient of the spring. 0 means that the spring is not attached.

### Return value

Rigidity coefficient.

## voidsetLinearVelocity( float velocity )

Sets a target velocity of the attached motor.

### Arguments

• float velocity - Target velocity in units per second.

## floatgetLinearVelocity( )

Returns the target velocity of the attached motor.

### Return value

Target velocity in units per second.

## voidsetRotation0( 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.

## voidsetRotation1( 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.

## voidsetWorldAxis( const Math::vec3 & axis )

Sets a joint axis in the world coordinates.

### Arguments

• const Math::vec3 & axis - Joint axis in the world coordinates.

## Math::vec3getWorldAxis( )

Returns the joint axis in the world coordinates.

### Return value

Joint axis in the world coordinates.

## voidsetWorldRotation( 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::mat3getWorldRotation( )

Last update: 27.12.2018