This version of documentation is OUTDATED! Please switch to the latest one.

# Unigine::JointHinge Class

This class is used to create hinge joints.

## static JointHingePtr create()

Constructor. Creates a hinge joint with an anchor at the origin of the world coordinates.

## static JointHingePtr create(const Ptr<Body> & body0, const Ptr<Body> & body1)

Constructor. Creates a hinge 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 JointHingePtr create(const Ptr<Body> & body0, const Ptr<Body> & body1, const Math::Vec3 & anchor, const Math::vec3 & axis)

Constructor. Creates a hinge 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 & axis - Axis coordinates.

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

Casts a JointHinge out of the Joint instance.

### Arguments

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

JointHinge.

## voidsetAngularAngle(float angle)

Sets a target angle of the attached angular spring. The spring tries to rotate the connected bodies so that they make this angle.

### Arguments

• float angle - Angle in degrees. The provided value will be saturated in the range [-180; 180].

## floatgetAngularAngle()

Returns the target angle of the attached angular spring. The spring tries to rotate the connected bodies so that they make this angle.

### Return value

Target angle in degrees.

## voidsetAngularDamping(float damping)

Sets an angular damping of the joint.

### Arguments

• float damping - Angular damping. If a negative value is provided, 0 will be used instead.

## floatgetAngularDamping()

Returns the angular damping of the joint.

Angular damping.

## voidsetAngularLimitFrom(float from)

Sets a low rotation limit angle. Rotation limit specifies how much a connected body can rotate around the joint axis.

### Arguments

• float from - Angle in degrees. The provided value will be saturated in the range [-180; 180].

## floatgetAngularLimitFrom()

Returns the low rotation limit angle. Rotation limit specifies how much a connected body can rotate around the joint axis.

### Return value

Low rotation limit angle in degrees.

## voidsetAngularLimitTo(float to)

Sets a high rotation limit angle. Rotation limit specifies how much a connected body can rotate around the joint axis.

### Arguments

• float to - Angle in degrees. The provided value will be saturated in the range [-180; 180].

## floatgetAngularLimitTo()

Returns the high rotation limit angle. Rotation limit specifies how much a connected body can rotate around the joint axis.

### Return value

High rotation limit angle in degrees.

## voidsetAngularSpring(float spring)

Sets a rigidity coefficient of the angular spring.

### Arguments

• float spring - Rigidity coefficient. If a negative value is provided, 0 will be used instead. 0 detaches the spring.

## floatgetAngularSpring()

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

### Return value

Rigidity coefficient.

## voidsetAngularTorque(float torque)

Sets a maximum torque of the angular motor.

### Arguments

• float torque - Maximum torque. If a negative value is provided, 0 will be used instead. 0 detaches the motor.

## floatgetAngularTorque()

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

Maximum torque.

## voidsetAngularVelocity(float velocity)

Sets a target velocity of the attached angular motor.

### Arguments

• float velocity - Velocity in radians per second.

## floatgetAngularVelocity()

Returns the target velocity of the attached angular motor.

### Return value

Target velocity in radians per second.

## voidsetAxis0(const Math::vec3 & axis0)

Sets an axis of the first connected body.

### Arguments

• const Math::vec3 & axis0 - Axis of the first body. The provided vector will be normalized.

## Math::vec3getAxis0()

Returns the axis of the first connected body.

### Return value

Axis of the first body.

## voidsetAxis1(const Math::vec3 & axis1)

Sets an axis of the second connected body.

### Arguments

• const Math::vec3 & axis1 - Axis of the second body. The provided vector will be normalized.

## Math::vec3getAxis1()

Returns the axis of the second connected body.

### Return value

Axis of the second body.

## floatgetCurrentAngularAngle()

Returns the current angle between the bodies.

### Return value

Current angle in degrees.

## floatgetCurrentAngularVelocity()

Returns the current velocity of the motor, i.e. the difference between angular velocities of two bodies connected with a hinge relative the hinge axis.
Notice
This function returns the valid velocity only if both bodies are of BodyRigid type. Otherwise, 0 is returned.

### Return value

Current motor velocity in radians per second.

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

Sets a joint axis. This method updates axes of the connected bodies.

### Arguments

• const Math::vec3 & axis - Joint axis.

## Math::vec3getWorldAxis()

Returns the joint axis. The joint axis is calculated based on the axes of the connected bodies.

### Return value

Joint axis.
Last update: 2017-07-03