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: