Unigine::JointHinge Class
Header: | #include <UniginePhysics.h> |
Inherits: | Joint |
This class is used to create hinge joints.
Example#
The following code illustrates connection of two bodies (b0 and b1) using a hinge joint.
include <UniginePhysics.h>
/* .. */
JointHingePtr joint = JointHinge::create(b0, b1);
// setting joint axis coordinates
joint->setWorldAxis(vec3(1.0f, 0.0f, 0.0f));
// setting common joint constraint parameters
joint->setLinearRestitution(0.4f);
joint->setAngularRestitution(0.4f);
joint->setLinearSoftness(0.4f);
joint->setAngularSoftness(0.4f);
// setting angular damping
joint->setAngularDamping(8.0f);
// setting angular limits, in degrees [-20; 20]
joint->setAngularLimitFrom(-20.0f);
joint->setAngularLimitTo(20.0f);
// setting spring rigidity coefficient
joint->setAngularSpring(8.0f);
// 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:
- hinge_00
- hinge_01
- hinge_02
JointHinge Class
Members
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.
void setAngularAngle ( 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].
float getAngularAngle ( ) #
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.void setAngularDamping ( 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.
float getAngularDamping ( ) #
Returns the angular damping of the joint.Return value
Angular damping.void setAngularLimitFrom ( 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].
float getAngularLimitFrom ( ) #
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.void setAngularLimitTo ( 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].
float getAngularLimitTo ( ) #
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.void setAngularSpring ( 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.
float getAngularSpring ( ) #
Returns the rigidity coefficient of the angular spring. 0 means that the spring is not attached.Return value
Rigidity coefficient.void setAngularTorque ( 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.
float getAngularTorque ( ) #
Returns the maximum torque of the attached angular motor. 0 means that the motor is not attached.Return value
Maximum torque.void setAngularVelocity ( float velocity ) #
Sets a target velocity of the attached angular motor.Arguments
- float velocity - Velocity in radians per second.
float getAngularVelocity ( ) #
Returns the target velocity of the attached angular motor.Return value
Target velocity in radians per second.void setAxis0 ( 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::vec3 getAxis0 ( ) #
Returns the axis of the first connected body.Return value
Axis of the first body.void setAxis1 ( 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::vec3 getAxis1 ( ) #
Returns the axis of the second connected body.Return value
Axis of the second body.float getCurrentAngularAngle ( ) #
Returns the current angle between the bodies.Return value
Current angle in degrees.float getCurrentAngularVelocity ( ) #
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.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.void setWorldAxis ( const Math::vec3 & axis ) #
Sets a joint axis. This method updates axes of the connected bodies.Arguments
- const Math::vec3 & axis - Joint axis.
Math::vec3 getWorldAxis ( ) #
Returns the joint axis. The joint axis is calculated based on the axes of the connected bodies.Return value
Joint axis.Last update:
2020-04-10
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)