# I3DShConstraint Struct Reference
[Shell Interfaces]

Inheritance diagram for I3DShConstraint:

List of all members.

## Public Member Functions
virtual int16 MCCOMAPI | GetNbrFreedom () const =0
virtual MCCOMErr MCCOMAPI | IncrementFreedomValue (int16 index, real &increment)=0
virtual MCCOMErr MCCOMAPI | GetMotionLimit (int16 index, ELimitType &limit) const =0
virtual MCCOMErr MCCOMAPI | GetFreedomRange (int16 index, real &min, real &max) const =0
virtual MCCOMErr MCCOMAPI | GetFreedomValue (int16 index, real &outValue) const =0
virtual MCCOMErr MCCOMAPI | GetTransformPartialDerivate (int16 index, TTransform3D &transform) const =0
virtual MCCOMErr MCCOMAPI | GetTransformSecondPartialDerivative (int16 index1, int16 index2, TTransform3D &transform) const =0
virtual MCCOMErr MCCOMAPI | GetRotationsOrder (EEulerAnglesOrder &outOrder) const =0
| Returns the order used to apply the different rotations.
virtual MCCOMErr MCCOMAPI | GetGimbalToLocalRotation (TMatrix33 &outRotation) const =0
| Fix for the axis constraint that rotates its Gimbal coordinates.
virtual boolean MCCOMAPI | CanUseGimbalRotation () const =0
| Returns tue if the gimbal mode is allowed for the constraint.
virtual MCCOMErr MCCOMAPI | GetTransform (TTransform3D &transform) const =0
virtual MCCOMErr MCCOMAPI | SetTransform (TTransform3D &transform)=0
virtual boolean MCCOMAPI | IsNewConstraint () const =0
| Returns true is the external constraint is an I3DExNewConstraint.

## Detailed Description

Constraints provide constraints between Tree Elements. A constraint, known as a link in RDS, defines motion links between Tree Elements. It allows you to define "mechanical" constrains (degrees of freedom) between one Tree Element and its father.

There are two interfaces to access a constraint: The shell interface (I3DShConstraint) and the external interface (I3DExConstraint) . You can get one from the other using QueryInterface.

You should use the Shell interface (I3DShConstraint) to access the component because the Shell will make sure that the parameter map of the external component is valid. This is especially important if the component is animated. For more information on components see the Overview of the SDK.

See also:
  I3DExConstraint

## Member Function Documentation

virtual boolean MCCOMAPI I3DShConstraint::CanUseGimbalRotation | ( |  | ) | const`[pure virtual]`

Returns tue if the gimbal mode is allowed for the constraint.

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetFreedomRange | ( | int16 | index,
|  | real & | min,
|  | real & | max |
| ) |  |  | const`[pure virtual]`

Returns the maximum range of increment and decrement for a given degree of freedom.

Parameters:

  | index | The index of the degree of freedom
  | min | The minimum value
  | max | The maximum value

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetFreedomValue | ( | int16 | index,
|  | real & | outValue |
| ) |  |  | const`[pure virtual]`

Get the current value of the given freedom

Parameters:

  | index | The degree of freedom

See also:
  EFreedomDegree

Parameters:

  | outValue | The value of the freedom

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetGimbalToLocalRotation | ( | TMatrix33 & | outRotation | ) | const`[pure virtual]`

Fix for the axis constraint that rotates its Gimbal coordinates.

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetMotionLimit | ( | int16 | index,
|  | ELimitType & | limit |
| ) |  |  | const`[pure virtual]`

Returns the constraint for a given degree of freedom.

Parameters:

  | index |
  | limit |

virtual int16 MCCOMAPI I3DShConstraint::GetNbrFreedom | ( |  | ) | const`[pure virtual]`

Returns the number of degrees of freedom. Because the freedom value can be limited, you have to give the range of values. This range is defined as a range of increment/decrement around the value.

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetRotationsOrder | ( | EEulerAnglesOrder & | outOrder | ) | const`[pure virtual]`

Returns the order used to apply the different rotations.

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetTransform | ( | TTransform3D & | transform | ) | const`[pure virtual]`

Returns the rotation matrix and translation vector due to the freedom values.

Note:
  When the freedom values are initialized the function GetTransform must return the identity matrix for the rotation and a null vector for the translation.

Parameters:

  | transform | A reference to a transform.

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetTransformPartialDerivate | ( | int16 | index,
|  | TTransform3D & | transform |
| ) |  |  | const`[pure virtual]`

To allow the inverse kinematics mechanism to work with a constraint, implement the GetTransfromPartialDerivate() function. A partial derivative transformation is a transformation where each element is derived by a freedom degree.

Parameters:

  | index | The degree of freedom used to derivate the transform.
  | transform | The partial derivative of the transform.

virtual MCCOMErr MCCOMAPI I3DShConstraint::GetTransformSecondPartialDerivative | ( | int16 | index1,
|  | int16 | index2,
|  | TTransform3D & | transform |
| ) |  |  | const`[pure virtual]`

Returns the second order partial derivative of the transform. A partial derivative transformation is a transformation where each element is derived by a freedom degree.

Parameters:

  | index1 | The first degree of freedom used to derivate the transform.
  | index2 | The second degree of freedom used to derivate the transform.
  | transform | The partial derivative of the transform.

virtual MCCOMErr MCCOMAPI I3DShConstraint::IncrementFreedomValue | ( | int16 | index,
|  | real & | increment |
| ) |  |  | `[pure virtual]`

Modify the value of a degree of freedom by adding an increment

Parameters:

  | index | The degree of freedom

See also:
  EFreedomDegree

Parameters:

  | increment | The increment value

virtual boolean MCCOMAPI I3DShConstraint::IsNewConstraint | ( |  | ) | const`[pure virtual]`

Returns true is the external constraint is an I3DExNewConstraint.

virtual MCCOMErr MCCOMAPI I3DShConstraint::SetTransform | ( | TTransform3D & | transform | ) | `[pure virtual]`

Sets the transformation matrix.

Parameters:

  | transform |

The documentation for this struct was generated from the following file:

- I3dShConstraint.h