# CSIBCTransfod Class Reference

`#include <SIBCTransfod.h>`

List of all members.

## Public Member Functions
| CSIBCTransfod ()
| CSIBCTransfod (const CSIBCVector3Dd &in_vctScl, const CSIBCRotationd &in_rotScl, const CSIBCRotationd &in_rot, const CSIBCVector3Dd &in_vctTrs)
| CSIBCTransfod (const CSIBCVector3Dd &in_vctScl, const CSIBCRotationd &in_rot, const CSIBCVector3Dd &in_vctTrs)
| CSIBCTransfod (const CSIBCVector3Dd &in_vctScl, const CSIBCRotationd &in_rotScl)
bool | GetSIScalingFlag () const
CSIBCTransfod & | SetSIScalingFlag (const bool in_bSIScaling)
bool | IsScalingOrientationExisting () const
CSIBCVector3Dd & | GetScaling (CSIBCVector3Dd &out_vctScl)
void | GetScaling (double &out_dX, double &out_dY, double &out_dZ)
void | GetScaling (CSIBCVector3Dd &out_vctScl, CSIBCRotationd &out_rotSclOri)
CSIBCRotationd & | GetScalingOrientation (CSIBCRotationd &in_rotSclOri)
CSIBCVector3Dd & | GetScalingOrientation (CSIBCVector3Dd &out_vctSclOri)
void | GetScalingOrientation (double &out_rdX, double &out_rdY, double &out_rdZ)
CSIBCRotationd & | GetRotation (CSIBCRotationd &out_rot)
CSIBCQuaterniond & | GetRotation (CSIBCQuaterniond &out_quat)
CSIBCRotMatd & | GetRotation (CSIBCRotMatd &out_matRot)
const CSIBCRotMatd * | GetRotation ()
CSIBCVector3Dd & | GetRotation (CSIBCVector3Dd &out_vctXYZAngles)
void | GetRotation (double &out_dX, double &out_dY, double &out_dZ)
void | GetRotation (CSIBCVector3Dd &out_vctAxis, double &out_dAngle)
CSIBCVector3Dd & | GetTranslation (CSIBCVector3Dd &out_vctTrs)
void | GetTranslation (double &out_dX, double &out_dY, double &out_dZ)
const CSIBCXfoMatd * | GetMatrix ()
CSIBCXfoMatd & | GetMatrix (CSIBCXfoMatd &out_matXfo)
CSIBCXfoMatd & | GetInvMatrix (CSIBCXfoMatd &out_matInvXfo)
CSIBCTransfod & | Set (const CSIBCVector3Dd &in_vctScl, const CSIBCRotationd &in_rotScl, const CSIBCRotationd &in_rot, const CSIBCVector3Dd &in_vctTrs)
CSIBCTransfod & | Set (const CSIBCVector3Dd &in_vctScl, const CSIBCRotationd &in_rot, const CSIBCVector3Dd &in_vctTrs)
CSIBCTransfod & | Set (const CSIBCTransfod &in_xfo)
CSIBCTransfod & | Set (const CSIBCXfoMatd &in_matXfo)
CSIBCTransfod & | Set (const CSIBCRotationd &in_rot)
CSIBCTransfod & | Set (const CSIBCVector3Dd &in_vct)
CSIBCTransfod & | SetScaling (const CSIBCVector3Dd &in_vctScl)
CSIBCTransfod & | SetScaling (double in_dX, double in_dY, double in_dZ)
CSIBCTransfod & | SetScaling (const CSIBCVector3Dd &in_vctScl, const CSIBCRotationd &in_rotSclOri)
CSIBCTransfod & | SetScalingOrientation (const CSIBCRotationd &in_rotSclOri)
CSIBCTransfod & | SetScalingOrientation (const CSIBCVector3Dd &in_vctSclOri)
CSIBCTransfod & | SetScalingOrientation (const double in_dX, const double in_dY, const double in_dZ)
CSIBCTransfod & | SetRotation (const CSIBCRotationd &in_rot)
CSIBCTransfod & | SetRotation (const CSIBCQuaterniond &in_quat)
CSIBCTransfod & | SetRotation (const CSIBCRotMatd &in_matRot)
CSIBCTransfod & | SetRotation (const CSIBCVector3Dd &in_vctXYZAngles)
CSIBCTransfod & | SetRotation (double in_dX, double in_dY, double in_dZ)
CSIBCTransfod & | SetRotation (const E3DAxisType in_axis, const double in_dAngle)
CSIBCTransfod & | SetRotation (const CSIBCVector3Dd &in_vctAxis, const double in_dAngle)
bool | SetRotation (const CSIBCVector3Dd &in_vctFrom, const CSIBCVector3Dd &in_vctTo, int &out_bFlip)
CSIBCTransfod & | SetRotation (const CSIBCVector3Dd &in_vctX, const CSIBCVector3Dd &in_vctY, const CSIBCVector3Dd &in_vctZ)
CSIBCTransfod & | SetTranslation (const CSIBCVector3Dd &in_vctTrs)
CSIBCTransfod & | SetTranslation (double in_dX, double in_dY, double in_dZ)
CSIBCTransfod & | SetIdentity (const unsigned char in_oWhichTransfo=oSiTransfoAll)
CSIBCTransfod & | Invert (CSIBCTransfod &in_xfo)
CSIBCTransfod & | Invert ()
CSIBCTransfod & | Mul (CSIBCTransfod &in_xfo1, CSIBCTransfod &in_xfo2, unsigned char in_oWhichComponents=oSiTransfoAll)
CSIBCTransfod & | Mul (CSIBCTransfod &in_xfo, unsigned char in_oWhichComponents=oSiTransfoAll)
CSIBCTransfod & | Dif (CSIBCTransfod &in_xfo1, CSIBCTransfod &in_xfo2, unsigned char in_oWhichComponents=oSiTransfoAll, CSIBCTransfod *in_pXfo3=0)
CSIBCTransfod & | MapSpaceToWorld (CSIBCTransfod &in_xfoFrom)
CSIBCTransfod & | MapWorldToSpace (CSIBCTransfod &in_xfoTo)
CSIBCTransfod & | MapSpaceToSpace (CSIBCTransfod &in_xfoFrom, CSIBCTransfod &in_xfoTo)
CSIBCTransfod & | AddScaling (const CSIBCVector3Dd &in_vctSclApplied, const E3DTransfoSpace in_eAlong=LOCAL_TRANSFO_SPACE, CSIBCRotationd *in_protAlong=0, const E3DTransfoSpace in_eAbout=LOCAL_TRANSFO_SPACE, const CSIBCVector3Dd *in_pvctAbout=0, const E3DSclType in_eSclType=XYZ_SCL_TYPE)
CSIBCTransfod & | AddRotation (CSIBCRotationd &in_rotApplied, const E3DTransfoSpace in_eAlong=LOCAL_TRANSFO_SPACE, CSIBCRotationd *in_protAlong=0, const E3DTransfoSpace in_eAround=LOCAL_TRANSFO_SPACE, const CSIBCVector3Dd *in_pvctAround=0, bool in_bIncrementEulerAngles=false)
CSIBCTransfod & | AddTranslation (const CSIBCVector3Dd &in_vctTrsApplied, const E3DTransfoSpace in_eAlong=LOCAL_TRANSFO_SPACE, CSIBCRotationd *in_protAlong=0)
CSIBCTransfod & | AddScalingOrientation (CSIBCRotationd &in_rotApplied, const E3DTransfoSpace in_eAlong=LOCAL_TRANSFO_SPACE, CSIBCRotationd *in_protAlong=0, const E3DTransfoSpace in_eAround=LOCAL_TRANSFO_SPACE, const CSIBCVector3Dd *in_pvctAround=0, bool in_bIncrementEulerAngles=false)
## Friends
CSIBCXfoMatd & | GetMapSpaceToWorld (const E3DVectorType in_eVctType, CSIBCTransfod &in_xfoFrom, CSIBCXfoMatd &out_matXfo)
CSIBCXfoMatd & | GetMapWorldToSpace (const E3DVectorType in_eVctType, CSIBCTransfod &in_xfoTo, CSIBCXfoMatd &out_matXfo)
CSIBCXfoMatd & | GetMapSpaceToSpace (const E3DVectorType in_eVctType, CSIBCTransfod &in_xfoFrom, CSIBCTransfod &in_xfoTo, CSIBCXfoMatd &out_matXfo)

## Detailed Description

Class describing an SRT transformation of an object.

## Constructor & Destructor Documentation

CSIBCTransfod | ( |  | ) |

Default constructor for identity transformation.

CSIBCTransfod | ( | const CSIBCVector3Dd & | in_vctScl,
|  | const CSIBCRotationd & | in_rotScl,
|  | const CSIBCRotationd & | in_rot,
|  | const CSIBCVector3Dd & | in_vctTrs |
| ) |  |  |

Constructor from individual components

Parameters:

  | in_vctScal | Scaling factors
  | in_rotScl | Scaling orientation,
  | in_rot | Orientation
  | in_vctTrs | Translation

CSIBCTransfod | ( | const CSIBCVector3Dd & | in_vctScl,
|  | const CSIBCRotationd & | in_rot,
|  | const CSIBCVector3Dd & | in_vctTrs |
| ) |  |  |

Constructor

Parameters:

  | in_vctScl | Scaling factors
  | in_rot | Rotation
  | in_vctTrs | Translation

CSIBCTransfod | ( | const CSIBCVector3Dd & | in_vctScl,
|  | const CSIBCRotationd & | in_rotScl |
| ) |  |  |

Constructor

Parameters:

  | in_vctScl | Scaling factors
  | in_rotScl | Scaling orientation

## Member Function Documentation

bool GetSIScalingFlag | ( |  | ) | const

Gets the softimage scaling flag

Return values:

  | true | Classical scaling
  | false | Proportional scaling

CSIBCTransfod& SetSIScalingFlag | ( | const bool | in_bSIScaling | ) |

Sets the softimage scaling flag

Parameters:

  | in_bSIScaling | true for classical scaling, false for proportional scaling

Returns:
  CSIBCTransfod Reference to this transformation

bool IsScalingOrientationExisting | ( |  | ) | const

Queries for the existence of scaling orientation in this transformation.

Returns:
  Wheter or not scaling orientation is present

CSIBCVector3Dd& GetScaling | ( | CSIBCVector3Dd & | out_vctScl | ) |

Get the scaling factors component

Parameters:

  | out_vctScl | Output vector for scaling factors.

Returns:
  CSIBCVector3Dd& Reference to `out_vctScl`

void GetScaling | ( | double & | out_dX,
|  | double & | out_dY,
|  | double & | out_dZ |
| ) |  |  |

Get the scaling factors component

Parameters:

  | out_dX | X scaling factor.
  | out_dY | Y scaling factor.
  | out_dZ | Z scaling factor.

void GetScaling | ( | CSIBCVector3Dd & | out_vctScl,
|  | CSIBCRotationd & | out_rotSclOri |
| ) |  |  |

Gets the scaling factors and scaling orientation components.

Parameters:

  | out_vctScl | Output vector for scaling factors.
  | out_rotSclOri | Output rotation for scaling.

CSIBCRotationd& GetScalingOrientation | ( | CSIBCRotationd & | in_rotSclOri | ) |

Gets the scaling orientation component.

Parameters:

  | in_rotSclOri | Scaling orientation

Returns:
  CSIBCRotationd Reference to `in_rotSclOri`

CSIBCVector3Dd& GetScalingOrientation | ( | CSIBCVector3Dd & | out_vctSclOri | ) |

Gets the scaling orientation component.

Parameters:

  | out_vctSclOri | Scaling orientation vector.

Returns:
  CSIBCRotationd Reference to `out_vctSclOri`

void GetScalingOrientation | ( | double & | out_rdX,
|  | double & | out_rdY,
|  | double & | out_rdZ |
| ) |  |  |

Gets the scaling orientation component.

Parameters:

  | out_rdX | X Euler angle in radians.
  | out_rdY | Y Euler angle in radians.
  | out_rdZ | Z Euler angle in radians.

CSIBCRotationd& GetRotation | ( | CSIBCRotationd & | out_rot | ) |

Gets the rotation component.

Parameters:

  | out_rout | The rotation component

Returns:
  CSIBCRotationd Reference to `out_rot`

CSIBCQuaterniond& GetRotation | ( | CSIBCQuaterniond & | out_quat | ) |

Gets the rotation component under quaternion representation.

Parameters:

  | out_quat | Quaternion representation.

Returns:
  CSIBCQuaterniond Reference to `out_quat`

CSIBCRotMatd& GetRotation | ( | CSIBCRotMatd & | out_matRot | ) |

Gets the rotation component under rotation matrix representation.

Parameters:

  | out_matRot | Rotation matrix representation.

Returns:
  CSIBCRotMatd Reference to `out_matRot`

const CSIBCRotMatd* GetRotation | ( |  | ) |

Gets the pointer to the internal rotation matrix representation of the rotation component.

Returns:
  CSIBCRotMatd Constant pointer to a rotation matrix that represents the rotation.

Note:
  Doing this is much faster than copying the whole matrix into another object when no changes have to be done on it. However, you have to be careful when using this function. Make sure the pointer it returns is not stored permanently in a way that it becomes invalid (when the object is destroyed for example).

CSIBCVector3Dd& GetRotation | ( | CSIBCVector3Dd & | out_vctXYZAngles | ) |

Gets the rotation component under Euler angles representation.

Parameters:

  | out_vctXYZAngles | Euler angles representation.

Returns:
  CSIBCVector3Dd Reference to `out_vctXYZAngles`

void GetRotation | ( | double & | out_dX,
|  | double & | out_dY,
|  | double & | out_dZ |
| ) |  |  |

Gets rotation component under Euler angles representation.

Parameters:

  | out_dX | X Euler angle in radians.
  | out_dY | Y Euler angle in radians.
  | out_dZ | Z Euler angle in radians.

void GetRotation | ( | CSIBCVector3Dd & | out_vctAxis,
|  | double & | out_dAngle |
| ) |  |  |

Gets the rotation component under axis-angle representation.

Parameters:

  | out_vctAxis | Axis
  | out_dAngle | Angle

CSIBCVector3Dd& GetTranslation | ( | CSIBCVector3Dd & | out_vctTrs | ) |

Gets the translation component.

Parameters:

  | out_vctTrs | Translation vector

Returns:
  CSIBCVector3Dd Reference to `out_vctTrs`

void GetTranslation | ( | double & | out_dX,
|  | double & | out_dY,
|  | double & | out_dZ |
| ) |  |  |

Gets the translation component.

Parameters:

  | out_dX | X translation.
  | out_dY | Y translation.
  | out_dZ | Z translation.

const CSIBCXfoMatd* GetMatrix | ( |  | ) |

Gets the transformation matrix

Returns:
  CSIBCXfoMatd Pointer to the internally stored transformation matrix

Note:
  Much faster than getting the matrix itself (see the other implementation of GetMatrix) when no changes have to be done on it. BUT PLEASE BE CAREFUL WHEN USING THIS FUNCTION. Make sure the pointer it returns is not stored permanently in a way that it becomes invalid (when the object is destroyed for example).

CSIBCXfoMatd& GetMatrix | ( | CSIBCXfoMatd & | out_matXfo | ) |

Gets a copy of the internal matrix representation of this transformation

Parameters:

  | out_matXfo | Destination for the copy

Return values:

  | CSIBCXfoMatd | Reference to the copied matrix

CSIBCXfoMatd& GetInvMatrix | ( | CSIBCXfoMatd & | out_matInvXfo | ) |

Get the matrix representation of the inverse of this transformation.

Parameters:

  | out_matInvXfo | Destination for the copy

Return values:

  | CSIBCXfoMatd | Reference to the copied matrix

CSIBCTransfod& Set | ( | const CSIBCVector3Dd & | in_vctScl,
|  | const CSIBCRotationd & | in_rotScl,
|  | const CSIBCRotationd & | in_rot,
|  | const CSIBCVector3Dd & | in_vctTrs |
| ) |  |  |

Sets the transformation components.

Parameters:

  | in_vctScl | Scaling factors
  | in_rotScl | Scaling orientation
  | in_rot | Orientation
  | in_vctTrs | Translation

Returns:
  Reference to this transformation

CSIBCTransfod& Set | ( | const CSIBCVector3Dd & | in_vctScl,
|  | const CSIBCRotationd & | in_rot,
|  | const CSIBCVector3Dd & | in_vctTrs |
| ) |  |  |

Sets the transformation components.

Parameters:

  | in_vctScl | Scaling factors
  | in_rot | Orientation
  | in_vctTrs | Translation

Returns:
  Reference to this transformation

CSIBCTransfod& Set | ( | const CSIBCTransfod & | in_xfo | ) |

Sets the transformation components from another transformation

Parameters:

  | in_xfo | Transformation to copy

Returns:
  Reference to this transformation

CSIBCTransfod& Set | ( | const CSIBCXfoMatd & | in_matXfo | ) |

Sets the transformation components from a transformation matrix

Parameters:

  | in_matXfo | Transformation matrix for setting this transformation.

Returns:
  Reference to this transformation

CSIBCTransfod& Set | ( | const CSIBCRotationd & | in_rot | ) |

Sets the transformation components from a rotation

Parameters:

  | in_rot | Source rotation

Returns:
  Reference to this transformation

CSIBCTransfod& Set | ( | const CSIBCVector3Dd & | in_vct | ) |

Sets the transformation components from a translation

Parameters:

  | in_vct | Translation vector

Returns:
  Reference to this transformation

CSIBCTransfod& SetScaling | ( | const CSIBCVector3Dd & | in_vctScl | ) |

Sets the scaling factors

Parameters:

  | in_vctScl | Scaling factors

Returns:
  Reference to this transformation

CSIBCTransfod& SetScaling | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ |
| ) |  |  |

Sets the scaling factors

Parameters:

  | in_dX | X scaling factor.
  | in_dY | Y scaling factor.
  | in_dZ | Z scaling factor.

Returns:
  Reference to this transformation

CSIBCTransfod& SetScaling | ( | const CSIBCVector3Dd & | in_vctScl,
|  | const CSIBCRotationd & | in_rotSclOri |
| ) |  |  |

Sets the scaling factors and rotation

Parameters:

  | in_vctScl | Scaling factors
  | in_rotSclOri | Scaling orientation.

Returns:
  Reference to this transformation

CSIBCTransfod& SetScalingOrientation | ( | const CSIBCRotationd & | in_rotSclOri | ) |

Set scaling orientation without affecting other components.

Parameters:

  | in_rotSclOri | Scaling orientation

Returns:
  Reference to this transformation

CSIBCTransfod& SetScalingOrientation | ( | const CSIBCVector3Dd & | in_vctSclOri | ) |

Set scaling orientation without affecting other components.

Parameters:

  | in_vctSclOri | Scaling orientation

Returns:
  Reference to this transformation

CSIBCTransfod& SetScalingOrientation | ( | const double | in_dX,
|  | const double | in_dY,
|  | const double | in_dZ |
| ) |  |  |

Set scaling orientation without affecting other components.

Parameters:

  | in_dX | X Scaling orientation
  | in_dY | Y Scaling orientation
  | in_dZ | Z Scaling orientation

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | const CSIBCRotationd & | in_rot | ) |

Sets the rotation without affecting other components.

Parameters:

  | in_rot | Orientation

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | const CSIBCQuaterniond & | in_quat | ) |

Sets the rotation from a quaternion.

Parameters:

  | in_quat | Quaternion representation

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | const CSIBCRotMatd & | in_matRot | ) |

Sets the rotation from a rotation matrix.

Parameters:

  | in_matRot | Rotation matrix.

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | const CSIBCVector3Dd & | in_vctXYZAngles | ) |

Sets the rotation from Euler Angles

Parameters:

  | in_vctXYZAngles | Euler angles

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ |
| ) |  |  |

Sets the rotation from Euler Angles

Parameters:

  | in_dX | X Euler angle in radians.
  | in_dY | Y Euler angle in radians.
  | in_dZ | Z Euler angle in radians.

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | const E3DAxisType | in_axis,
|  | const double | in_dAngle |
| ) |  |  |

Sets the rotation from an axis-angle

Parameters:

  | in_axis | Axis of rotation
  | in_dAngle | Angle around the axis

Returns:
  Reference to this transformation

CSIBCTransfod& SetRotation | ( | const CSIBCVector3Dd & | in_vctAxis,
|  | const double | in_dAngle |
| ) |  |  |

Sets the rotation from an axis-angle

Parameters:

  | in_vctAxis | Axis of rotation
  | in_dAngle | Angle around the axis

Returns:
  Reference to this transformation

bool SetRotation | ( | const CSIBCVector3Dd & | in_vctFrom,
|  | const CSIBCVector3Dd & | in_vctTo,
|  | int & | out_bFlip |
| ) |  |  |

Sets the rotation from a FROM-TO vector representation.

Parameters:

  | in_vctFrom | Starting vector.
  | in_vctTo | Ending vector.
  | out_bFlip | Does the generated rotation produces a sudden flip? See comment in CSIBCRotationd::Set method.

Returns:
  bool Reference to `out_bFlip`

See also:
  CSIBCRotationd::Set.

CSIBCTransfod& SetRotation | ( | const CSIBCVector3Dd & | in_vctX,
|  | const CSIBCVector3Dd & | in_vctY,
|  | const CSIBCVector3Dd & | in_vctZ |
| ) |  |  |

Sets the rotation from three orthonormal axes. No verification is performed about their orthonormality.

Parameters:

  | in_vctX | Unitary X axis (orthogonal to Y and Z).
  | in_vctY | Unitary Y axis (orthogonal to X and Z).
  | in_vctZ | Unitary Z axis (orthogonal to X and Y).

Returns:
  Reference to this transformation

CSIBCTransfod& SetTranslation | ( | const CSIBCVector3Dd & | in_vctTrs | ) |

Set the translation without affecting other components.

Parameters:

  | in_vctTrs | Translation

Returns:
  Reference to this transformation

CSIBCTransfod& SetTranslation | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ |
| ) |  |  |

Set the translation without affecting other components.

Parameters:

  | in_dX | X translation.
  | in_dY | Y translation.
  | in_dZ | Z translation.

Returns:
  Reference to this transformation

CSIBCTransfod& SetIdentity | ( | const unsigned char | in_oWhichTransfo = `oSiTransfoAll` | ) |

Sets some or all components of this transformation to the identity.

Parameters:

  | in_oWhichTransfo | TransformationFlags Flag that detemines which transformation component must be affected

Returns:
  Reference to this transformation

See also:
  TransformationFlags

CSIBCTransfod& Invert | ( | CSIBCTransfod & | in_xfo | ) |

Sets the transformation as the inverse of another transformation

Parameters:

  | in_xfo | Transformation

Returns:
  Reference to this transformation

CSIBCTransfod& Invert | ( |  | ) |

Inverts the current transformation

Returns:
  Reference to this transformation

CSIBCTransfod& Mul | ( | CSIBCTransfod & | in_xfo1,
|  | CSIBCTransfod & | in_xfo2,
|  | unsigned char | in_oWhichComponents = `oSiTransfoAll` |
| ) |  |  |

Combines two transformations into this one.

Parameters:

  | in_xfo1 | First transformation to combine.
  | in_xfo2 | Second transformation to combine.
  | in_oWhichComponents | TransformationFlags Which components to combine (oSiTransfoAll by default).

Returns:
  Reference to this transformation

Note:
  Given the transformations X1=(s1,u1,r1,t1) and X2=(s2,u2,r2,t2), we want to combine them into X=(s,u,r,t), where s stands for scaling factors, u for scaling orientation, r for rotation and t for translation. All components are under matrix representation. Under the SOFTIMAGE scaling scheme no shearing is possible and the u components are forced to be identity. The transformations are combined in the following way:
  s = s1 * s2 (component wise product)
  r = r1 * r2
  t = t1 * s2 * r2 * t2 (where s2, r2 and t2 are matrices).

Under the Classical scaling scheme the shearing is possible. We could combined the transformations in the following way:
X = s1 * r1 * t1 * s2 * r2 * t2
which will introduce shearing if r1 is not identity and s2 is not uniform. But we could also introduce shearing explicitly by using u components:
X = u1(T) * s1 * u1 * r1 * t1 * u2(T) * s2 * u2 * r2 * t2
where u(T) stands for the transpose of u.

In SOFTIMAGE scaling scheme, transformations must be combined using components representation. In classical scheme, they are combined by simply using product of matrices.

See also:
  CSIBCTransfod::Div

  TransformationFlags

CSIBCTransfod& Mul | ( | CSIBCTransfod & | in_xfo,
|  | unsigned char | in_oWhichComponents = `oSiTransfoAll` |
| ) |  |  |

Right multiplis this transformation by another transformation.

Parameters:

  | in_xfo | Transformation to multiply to the right.
  | in_oWhichComponents | TransformationFlags Which components to combine (oSiTransfoAll by default).

Returns:
  Reference to this transformation

See also:
  CSIBCTransfod::Div

  TransformationFlags

CSIBCTransfod& Dif | ( | CSIBCTransfod & | in_xfo1,
|  | CSIBCTransfod & | in_xfo2,
|  | unsigned char | in_oWhichComponents = `oSiTransfoAll`,
|  | CSIBCTransfod * | in_pXfo3 = `0` |
| ) |  |  |

Computes the product of a given transformation (T1) with the inverse of another one (T2), that is, compute this = T1 * T2(-1).

Parameters:

  | in_xfo1 | First transformation to multiply.
  | in_xfo2 | Second transformation which inverse must be right-multiplied by the first one
  | in_oWhichComponents | TransformationFlags Which components to combine (oSiTransfoAll by default).
  | in_pXfo3 | If non null, use *in_pXfo3 Euler angles as the target for the Euler angles associated with this.

Returns:
  Reference to this transformation

Note:
  This is useful when we want to compensate a transformation when parenting -- We want to preserve Tglobal of an object.
  We know that Tnewlocal * Tparent = Toldglobal, then we need to compute Tnewlocal = Toldglobal * Tparent(-1) and when computing global transformation of child we will get Tnewglobal = Tnewlocal * Tparent = Toldglobal.

Or, when compensating a geometry when a given transformation is applied to the center of the object. Given an old vector Vlocal specified relative to a transformation Tglobal, then its global value is Vglobal = Vlocal * Tglobal. We apply T to the center. To preserve the vector globally we must compute Vnewlocal=Vlocal * Tglobal * T(-1).

This function is the reverse of the CSIBCTransfod::Mul function.

See also:
  CSIBCTransfod::Mul

  TransformationFlags

CSIBCTransfod& MapSpaceToWorld | ( | CSIBCTransfod & | in_xfoFrom | ) |

Maps the transformation from a given space to the world space.

Parameters:

  | in_xfoFrom | Space into which this transformation is currently represented.

Returns:
  Reference to this transformation

CSIBCTransfod& MapWorldToSpace | ( | CSIBCTransfod & | in_xfoTo | ) |

Maps this transformation from the world space to a given space.

Parameters:

  | in_xfoTo | Space into which this transformation will be represented.

Returns:
  Reference to this transformation

CSIBCTransfod& MapSpaceToSpace | ( | CSIBCTransfod & | in_xfoFrom,
|  | CSIBCTransfod & | in_xfoTo |
| ) |  |  |

Maps this transformation from a given space to another one.

Parameters:

  | in_xfoFrom | Space into which this transformation is currently represented.
  | in_xfoTo | Space into which this transformation will be represented.

Returns:
  Reference to this transformation

CSIBCTransfod& AddScaling | ( | const CSIBCVector3Dd & | in_vctSclApplied,
|  | const E3DTransfoSpace | in_eAlong = `LOCAL_TRANSFO_SPACE`,
|  | CSIBCRotationd * | in_protAlong = `0`,
|  | const E3DTransfoSpace | in_eAbout = `LOCAL_TRANSFO_SPACE`,
|  | const CSIBCVector3Dd * | in_pvctAbout = `0`,
|  | const E3DSclType | in_eSclType = `XYZ_SCL_TYPE` |
| ) |  |  |

Apply a scaling to the transformation along local axes, parent's axes or any scaling axes, and about local position, parent's position or any world position. Scaling can be Uniform, Volumic, or XYZ.

Parameters:

  | in_vctSclApplied | Scaling factors to apply.
  | in_eAlong | Apply scaling along local axes, axes or other scaling axes axes.
  | in_protAlong | Pointer to specific scaling axes. When scaling is applied along OTHER scaling axes.
  | in_eAbout | Apply scaling about LOCAL position, PARENT's position or OTHER position.
  | in_pvctAbout | Pointer to specific position when scaling is applied about OTHER position.

Returns:
  Reference to this transformation

Note:
  This function assumes that the transformation itself and the parameters (scaling axes and reference position) are ALL defined relative to the SAME SPACE. When the transformation is to be edited using parameters from different spaces, all must first be converted into the same common space as the transformation, or the opposite.

When the common space is the WORLD space, then PARENT's axes and PARENT's position mean WORLD axes and WORLD position. Note also that passing identity scaling axes (main X,Y and Z axes) and/or identity position (null vector) would give the same results as specifying that PARENT's axes and/or PARENT's position must be used. On the other hand, asking to use PARENT's axes or position will be more efficient.

CSIBCTransfod& AddRotation | ( | CSIBCRotationd & | in_rotApplied,
|  | const E3DTransfoSpace | in_eAlong = `LOCAL_TRANSFO_SPACE`,
|  | CSIBCRotationd * | in_protAlong = `0`,
|  | const E3DTransfoSpace | in_eAround = `LOCAL_TRANSFO_SPACE`,
|  | const CSIBCVector3Dd * | in_pvctAround = `0`,
|  | bool | in_bIncrementEulerAngles = `false` |
| ) |  |  |

Applies a rotation to this transformation ALONG local axes, parent's axes or any rotation axes, and AROUND local position, parent's position or any position.

Parameters:

  | in_rotApplied | Rotation to apply.
  | in_eAlong | Apply rotation along LOCAL axes,
  | in_protAlong | Pointer to specific rotation axes when rotation is applied along OTHER rotation axes.
  | in_eAround | Apply rotation around LOCAL position, PARENT's position or OTHER position.
  | in_pvctAround | Pointer to specific position when rotation is applied around OTHER position.
  | in_bIncrementEulerAngles | If true, update the Euler angles of the resulting rotation using the previous angles as the target.

Returns:
  Reference to this transformation

Note:
  This function assumes that the transformation itself and the parameters (scaling axes and reference position) are ALL defined relative to the SAME SPACE. When the transformation is to be edited using parameters from different spaces, all must first be converted into the same common space as the transformation, or the opposite.

When the common space is the WORLD space, then PARENT's axes and PARENT's position mean WORLD axes and WORLD position. Note also that passing identity scaling axes (main X,Y and Z axes) and/or identity position (null vector) would give the same results as specifying that PARENT's axes and/or PARENT's position must be used. On the other hand, asking to use PARENT's axes or position will be more efficient.

CSIBCTransfod& AddTranslation | ( | const CSIBCVector3Dd & | in_vctTrsApplied,
|  | const E3DTransfoSpace | in_eAlong = `LOCAL_TRANSFO_SPACE`,
|  | CSIBCRotationd * | in_protAlong = `0` |
| ) |  |  |

Apply a translation to this transformation ALONG local axes, parent's axes or any translation axes.

Parameters:

  | in_vctTrsApplied | Translation to apply.
  | in_eAlong | Apply translation along LOCAL axes, PARENT's axes or OTHER translation axes.
  | in_protAlong | Pointer to specific translation axes when translation is applied along OTHER translation axes.

Returns:
  Reference to this transformation

Note:
  This function assumes that the transformation itself and the parameters (scaling axes and reference position) are ALL defined relative to the SAME SPACE. When the transformation is to be edited using parameters from different spaces, all must first be converted into the same common space as the transformation, or the opposite.

When the common space is the WORLD space, then PARENT's axes and PARENT's position mean WORLD axes and WORLD position. Note also that passing identity scaling axes (main X,Y and Z axes) and/or identity position (null vector) would give the same results as specifying that PARENT's axes and/or PARENT's position must be used. On the other hand, asking to use PARENT's axes or position will be more efficient.

CSIBCTransfod& AddScalingOrientation | ( | CSIBCRotationd & | in_rotApplied,
|  | const E3DTransfoSpace | in_eAlong = `LOCAL_TRANSFO_SPACE`,
|  | CSIBCRotationd * | in_protAlong = `0`,
|  | const E3DTransfoSpace | in_eAround = `LOCAL_TRANSFO_SPACE`,
|  | const CSIBCVector3Dd * | in_pvctAround = `0`,
|  | bool | in_bIncrementEulerAngles = `false` |
| ) |  |  |

Applies a scaling orientation to this transformation ALONG local axes, parent axes or any rotation axes, and AROUND local position, parent position or any position.

Parameters:

  | in_rSclOriApplied | ScalingOrientation to apply.
  | in_eAlong | Apply rotation along LOCAL axes, PARENT axes or OTHER rotation axes.
  | in_pRotAlong | Pointer to specific rotation axes when rotation is applied along OTHER rotation axes.
  | in_eAround | Apply rotation around LOCAL position, PARENT position or OTHER position.
  | in_pVctAround | Pointer to specific position when rotation is applied around OTHER position.
  | in_bIncrementEulerAngles | | If true, update the Euler angles of the resulting rotation using the previous angles as the target.

Returns:
  Reference to this transformation

Note:
  This function assumes that the transformation itself and the parameters (scaling axes and reference position) are ALL defined relative to the SAME SPACE. When the transformation is to be edited using parameters from different spaces, all must first be converted into the same common space as the transformation, or the opposite.

When the common space is the WORLD space, then PARENT's axes and PARENT's position mean WORLD axes and WORLD position. Note also that passing identity scaling axes (main X,Y and Z axes) and/or identity position (null vector) would give the same results as specifying that PARENT's axes and/or PARENT's position must be used. On the other hand, asking to use PARENT's axes or position will be more efficient.

## Friends And Related Function Documentation

CSIBCXfoMatd& GetMapSpaceToWorld | ( | const E3DVectorType | in_eVctType,
|  | CSIBCTransfod & | in_xfoFrom,
|  | CSIBCXfoMatd & | out_matXfo |
| ) |  |  | `[friend]`

Gets a matrix to map a point, a line or a direction vector from a given space to the world space.

Parameters:

  | in_eVctType | Get a mapping matrix for a point, a line or a direction vector?
  | in_xfoFrom | Space into which vectors are currently represented.
  | out_matXfo | Output transformation matrix.

Returns:
  Reference to the output transformation matrix.

CSIBCXfoMatd& GetMapWorldToSpace | ( | const E3DVectorType | in_eVctType,
|  | CSIBCTransfod & | in_xfoTo,
|  | CSIBCXfoMatd & | out_matXfo |
| ) |  |  | `[friend]`

Gets a matrix to map a point, a line or a direction vector from the world space to a given space.

Parameters:

  | in_eVctType | Get a mapping matrix for a point, a line or a direction vector?
  | in_xfoTo | Space into which vectors will be represented.
  | out_matXfo | Output transformation matrix.

Returns:
  Reference to the output transformation matrix.

CSIBCXfoMatd& GetMapSpaceToSpace | ( | const E3DVectorType | in_eVctType,
|  | CSIBCTransfod & | in_xfoFrom,
|  | CSIBCTransfod & | in_xfoTo,
|  | CSIBCXfoMatd & | out_matXfo |
| ) |  |  | `[friend]`

Gets a matrix to map a point, a line or a direction vector from a given space to another one.

Parameters:

  | in_eVctType | Get a mapping matrix for a point, a line or a direction vector?
  | in_xfoFrom | Space into which vectors are currently represented.
  | in_xfoTo | Space into which vectors will be represented.
  | out_matXfo | Output transformation matrix.

Returns:
  Reference to the output transformation matrix.

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

- SIBCTransfod.h