fbmath.h File Reference

This reference page is linked to from the following overview topics: Your First Python Program, Utility Classes.


Contains routines for vector and matrix manipulation. More...

#include <kaydaradef.h>
#include <fbsdk/fbtypes.h>

Go to the source code of this file.

Defines

#define  FBSDK_DLL   K_DLLIMPORT
  Be sure that FBSDK_DLL is defined only once...

Enumerations

enum   FBRotationOrder {
  kFBXYZ, kFBXZY, kFBYXZ, kFBYZX,
  kFBZXY, kFBZYX
}
 

Specify the Euler rotation order.

More...

Functions

  FB_DEFINE_ENUM (FBSDK_DLL, RotationOrder)
FBSDK_DLL void  FBMatrixInverse (FBMatrix &pMatrix, const FBMatrix &pSrc)
  Invert a matrix.
FBSDK_DLL void  FBMatrixTranspose (FBMatrix &pMatrix, const FBMatrix &pSrc)
  Transpose a matrix.
FBSDK_DLL void  FBMatrixMult (FBMatrix &pMatrix, const FBMatrix &pA, const FBMatrix &pB)
  Multiply two matrices.
FBSDK_DLL void  FBVertexMatrixMult (FBVertex &pOutVertex, const FBMatrix &pMatrix, const FBVertex &pVertex)
  Multiply a vertex by a matrix.
FBSDK_DLL void  FBVectorMatrixMult (FBVector4d &pOutVector, const FBMatrix &pMatrix, const FBVector4d &pVector)
  Multiply a vector by a matrix.
FBSDK_DLL void  FBTranslationToMatrix (FBMatrix &pMatrix, const FBTVector &pVector)
  Convert a translation vector to a matrix.
FBSDK_DLL void  FBRotationToMatrix (FBMatrix &pMatrix, const FBRVector &pVector, FBRotationOrder pRotationOrder=kFBXYZ)
  Convert a rotation vector to a matrix.
FBSDK_DLL void  FBScalingToMatrix (FBMatrix &pMatrix, const FBSVector &pVector)
  Convert a scaling vector to a matrix.
FBSDK_DLL void  FBTRSToMatrix (FBMatrix &pMatrix, const FBTVector &pTVector, const FBRVector &pRVector, const FBSVector &pSVector)
  Convert translation, rotation, and scaling vectors to a matrix.
FBSDK_DLL void  FBMatrixToTranslation (FBTVector &pVector, const FBMatrix &pMatrix)
  Obtain translation vector from a matrix.
FBSDK_DLL void  FBMatrixToRotation (FBRVector &pVector, const FBMatrix &pMatrix, FBRotationOrder pRotationOrder=kFBXYZ)
  Obtain rotation vector from a matrix.
FBSDK_DLL void  FBMatrixToScaling (FBSVector &pVector, const FBMatrix &pMatrix)
  Obtain scaling vector from a matrix.
FBSDK_DLL void  FBMatrixToTRS (FBTVector &pTVector, FBRVector &pRVector, FBSVector &pSVector, const FBMatrix &pMatrix)
  Obtain translation, rotation, and scaling vectors from a matrix.
FBSDK_DLL void  FBRotationToQuaternion (FBQuaternion &pQuaternion, const FBRVector &pVector, FBRotationOrder pRotationOrder=kFBXYZ)
  Get a quaternion from a rotation vector.
FBSDK_DLL void  FBQuaternionToRotation (FBRVector &pVector, const FBQuaternion &pQuaternion, FBRotationOrder pRotationOrder=kFBXYZ)
  Get a rotation vector from a quaternion vector.
FBSDK_DLL void  FBGetLocalMatrix (FBMatrix &pMatrix, const FBMatrix &pMatrixParent, const FBMatrix &pMatrixChild)
  Get local matrix from parent and child matrices.
FBSDK_DLL void  FBGetGlobalMatrix (FBMatrix &pMatrix, const FBMatrix &pMatrixParent, const FBMatrix &pLocalMatrix)
  Get global matrix from parent and child matrices.
FBSDK_DLL void  FBMatrixOrthogonalize (FBMatrix &pMatrix)
  Get global matrix from parent and child matrices.
FBSDK_DLL void  FBAdd (FBTVector &pResult, const FBTVector &pV1, const FBTVector &pV2)
  Add two vectors together (pResult = pV1 + pV2)
FBSDK_DLL void  FBSub (FBTVector &pResult, const FBTVector &pV1, const FBTVector &pV2)
  Subtract pV2 from pV1 (pResult = pV1 - pV2)
FBSDK_DLL void  FBMult (FBTVector &pResult, const FBTVector &pV1, double pV2)
  Multiply pV2 from pV1 (pResult = pV1 * pV2)
FBSDK_DLL void  FBMult (FBTVector &pResult, const FBTVector &pV1, const FBTVector &pV2)
  Calculate the cross product of two vectors.
FBSDK_DLL void  FBMult (FBMatrix &pResult, const FBMatrix &pM, const FBSVector &pV)
  Calculate the cross product of a Matrix and Scale Vector.
FBSDK_DLL double  FBDot (const FBTVector &pV1, const FBTVector &pV2)
  Calculate the dot product of two vectors.
FBSDK_DLL double  FBLength (const FBTVector &pV)
  Get the length of a vector.
FBSDK_DLL void  FBQAdd (FBQuaternion &pResult, const FBQuaternion &pQ1, const FBQuaternion &pQ2)
  Add two quaternions together (pResult = pQ1 + pQ2)
FBSDK_DLL void  FBQSub (FBQuaternion &pResult, const FBQuaternion &pQ1, const FBQuaternion &pQ2)
  Subtract pQ2 from pQ1 (pResult = pQ1 - pQ2)
FBSDK_DLL void  FBQMult (FBQuaternion &pResult, const FBQuaternion &pQ1, double pQ2)
  Multiply pQ2 from pQ1 (pResult = pQ1 * pQ2)
FBSDK_DLL void  FBQMult (FBQuaternion &pResult, const FBQuaternion &pQ1, const FBQuaternion &pQ2)
  Calculate the cross product of two quaternions.
FBSDK_DLL double  FBQDot (const FBQuaternion &pQ1, const FBQuaternion &pQ2)
  Calculate the dot product of two quaternions.
FBSDK_DLL double  FBQLength (const FBQuaternion &pQ)
  Get the length of a quaternion.
FBSDK_DLL double  FBLength (const FBVertex &pV)
  Get the length of a vertex (from origin)
FBSDK_DLL void  FBInterpolateRotation (FBRVector &pROut, const FBRVector &pR0, const FBRVector &pR1, double pU)
  Interpolate a rotation in Euler space.
FBSDK_DLL void  FBInterpolateRotation (FBQuaternion &pQOut, const FBQuaternion &pQ0, const FBQuaternion &pQ1, double pU)
  Interpolate a rotation in Quaternion.
FBSDK_DLL void  FBGetContinuousRotation (FBRVector &pROut, const FBRVector &pR0, const FBRVector &pR1)
  Get a continuous rotation in Euler space.
FBSDK_DLL double  FBClamp (double pV, double pL, double pH)
  Clamp value.
FBSDK_DLL void  FBBigEndianToNative (unsigned short &pV)
  Change from big endian to native format.
FBSDK_DLL void  FBLittleEndianToNative (unsigned short &pV)
  Change from little endian to native format.

Detailed Description

Contains routines for vector and matrix manipulation.

Definition in file fbmath.h.


Define Documentation

#define FBSDK_DLL   K_DLLIMPORT

Be sure that FBSDK_DLL is defined only once...

Definition at line 48 of file fbmath.h.


Enumeration Type Documentation

Specify the Euler rotation order.

Enumerator:
kFBXYZ 

XYZ.

kFBXZY 

XZY.

kFBYXZ 

YXZ.

kFBYZX 

YZX.

kFBZXY 

ZXY.

kFBZYX 

ZYX.

Definition at line 58 of file fbmath.h.


Function Documentation

FB_DEFINE_ENUM ( FBSDK_DLL  ,
RotationOrder   
)
FBSDK_DLL void FBMatrixInverse ( FBMatrix pMatrix,
const FBMatrix pSrc 
)

Invert a matrix.

Return values:
pMatrix Calculated inverse matrix.
Parameters:
pSrc Source matrix to invert.
FBSDK_DLL void FBMatrixTranspose ( FBMatrix pMatrix,
const FBMatrix pSrc 
)

Transpose a matrix.

Return values:
pMatrix Calculated transpose matrix.
Parameters:
pSrc Source matrix to transpose.
FBSDK_DLL void FBMatrixMult ( FBMatrix pMatrix,
const FBMatrix pA,
const FBMatrix pB 
)

Multiply two matrices.

Return values:
pMatrix Calculated resulting matrix.
Parameters:
pA 1st matrix.
pB 2nd matrix.
FBSDK_DLL void FBVertexMatrixMult ( FBVertex pOutVertex,
const FBMatrix pMatrix,
const FBVertex pVertex 
)

Multiply a vertex by a matrix.

Return values:
pOutVertex Resulting vertex.
Parameters:
pMatrix Matrix to affect the vertex with.
pVertex Source vertex.
FBSDK_DLL void FBVectorMatrixMult ( FBVector4d pOutVector,
const FBMatrix pMatrix,
const FBVector4d pVector 
)

Multiply a vector by a matrix.

Return values:
pOutVector Resulting vector.
Parameters:
pMatrix Matrix to affect the vector with.
pVector Source vector.
FBSDK_DLL void FBTranslationToMatrix ( FBMatrix pMatrix,
const FBTVector pVector 
)

Convert a translation vector to a matrix.

Return values:
pMatrix Calculated resulting matrix.
Parameters:
pVector Translation vector.
FBSDK_DLL void FBRotationToMatrix ( FBMatrix pMatrix,
const FBRVector pVector,
FBRotationOrder  pRotationOrder = kFBXYZ 
)

Convert a rotation vector to a matrix.

Return values:
pMatrix Calculated resulting matrix.
Parameters:
pVector Rotation vector.
pRotationOrder Rotation order
FBSDK_DLL void FBScalingToMatrix ( FBMatrix pMatrix,
const FBSVector pVector 
)

Convert a scaling vector to a matrix.

Return values:
pMatrix Calculated resulting matrix.
Parameters:
pVector Scaling vector.
FBSDK_DLL void FBTRSToMatrix ( FBMatrix pMatrix,
const FBTVector pTVector,
const FBRVector pRVector,
const FBSVector pSVector 
)

Convert translation, rotation, and scaling vectors to a matrix.

Return values:
pMatrix Calculated resulting matrix.
Parameters:
pTVector Translation vector.
pRVector Rotation vector.
pSVector Scaling vector.
Warning:
Rotation is in EulerXYZ
FBSDK_DLL void FBMatrixToTranslation ( FBTVector pVector,
const FBMatrix pMatrix 
)

Obtain translation vector from a matrix.

Return values:
pVector Extracted translation vector.
Parameters:
pMatrix Input matrix.
FBSDK_DLL void FBMatrixToRotation ( FBRVector pVector,
const FBMatrix pMatrix,
FBRotationOrder  pRotationOrder = kFBXYZ 
)

Obtain rotation vector from a matrix.

Return values:
pVector Extracted rotation vector.
Parameters:
pMatrix Input matrix.
pRotationOrder Rotation Order.
Warning:
Rotation is in EulerXYZ or EulerZYX only
FBSDK_DLL void FBMatrixToScaling ( FBSVector pVector,
const FBMatrix pMatrix 
)

Obtain scaling vector from a matrix.

Return values:
pVector Extracted scaling vector.
Parameters:
pMatrix Input matrix.
FBSDK_DLL void FBMatrixToTRS ( FBTVector pTVector,
FBRVector pRVector,
FBSVector pSVector,
const FBMatrix pMatrix 
)

Obtain translation, rotation, and scaling vectors from a matrix.

Return values:
pTVector Extracted translation vector.
pRVector Extracted rotation vector.
pSVector Extracted scaling vector.
Parameters:
pMatrix Input matrix.
Warning:
Rotation is in EulerXYZ
FBSDK_DLL void FBRotationToQuaternion ( FBQuaternion pQuaternion,
const FBRVector pVector,
FBRotationOrder  pRotationOrder = kFBXYZ 
)

Get a quaternion from a rotation vector.

Return values:
pQuaternion Calculated quaternion.
Parameters:
pVector Input rotation vector.
pRotationOrder Rotation order of the rotation vector.
FBSDK_DLL void FBQuaternionToRotation ( FBRVector pVector,
const FBQuaternion pQuaternion,
FBRotationOrder  pRotationOrder = kFBXYZ 
)

Get a rotation vector from a quaternion vector.

Return values:
pVector Calculated rotation vector.
Parameters:
pQuaternion Input quaternion.
pRotationOrder Rotation order of the rotation vector.
Warning:
Rotation is in EulerXYZ or kFBZYX only
FBSDK_DLL void FBGetLocalMatrix ( FBMatrix pMatrix,
const FBMatrix pMatrixParent,
const FBMatrix pMatrixChild 
)

Get local matrix from parent and child matrices.

Will calculate the local matrix from two global matrices. The resulting matrix will be a local matrix containing the local transformations to go from the parent referentialto the child referential.

Return values:
pMatrix Calculated local matrix.
Parameters:
pMatrixParent Parent matrix (new base referential).
pMatrixChild Child matrix.
FBSDK_DLL void FBGetGlobalMatrix ( FBMatrix pMatrix,
const FBMatrix pMatrixParent,
const FBMatrix pLocalMatrix 
)

Get global matrix from parent and child matrices.

From an input referential, this function will calculate the global matrix corresponding to the input local matrix (which is with respect to the parent matrix).

Return values:
pMatrix Calculated local matrix.
Parameters:
pMatrixParent Parent matrix.
pLocalMatrix Local matrix.
FBSDK_DLL void FBMatrixOrthogonalize ( FBMatrix pMatrix )

Get global matrix from parent and child matrices.

From an input referential, this function will calculate the global matrix corresponding to the input local matrix (which is with respect to the parent matrix).

Return values:
pMatrix Orthogonalized matrix.
Parameters:
pMatrix Rotation Matrix to Orthogonalize.
FBSDK_DLL void FBAdd ( FBTVector pResult,
const FBTVector pV1,
const FBTVector pV2 
)

Add two vectors together (pResult = pV1 + pV2)

Return values:
pResult Resulting vector.
Parameters:
pV1 1st vector.
pV2 2nd vector.
FBSDK_DLL void FBSub ( FBTVector pResult,
const FBTVector pV1,
const FBTVector pV2 
)

Subtract pV2 from pV1 (pResult = pV1 - pV2)

Return values:
pResult Resulting vector.
Parameters:
pV1 1st vector.
pV2 2nd vector.
FBSDK_DLL void FBMult ( FBTVector pResult,
const FBTVector pV1,
double  pV2 
)

Multiply pV2 from pV1 (pResult = pV1 * pV2)

Return values:
pResult Resulting vector.
Parameters:
pV1 1st vector.
pV2 2nd vector.
FBSDK_DLL void FBMult ( FBTVector pResult,
const FBTVector pV1,
const FBTVector pV2 
)

Calculate the cross product of two vectors.

Return values:
pResult Resulting vector.
Parameters:
pV1 1st vector.
pV2 2nd vector.
FBSDK_DLL void FBMult ( FBMatrix pResult,
const FBMatrix pM,
const FBSVector pV 
)

Calculate the cross product of a Matrix and Scale Vector.

Return values:
pResult Resulting Matrix.
Parameters:
pM Matrix.
pV vector.
FBSDK_DLL double FBDot ( const FBTVector pV1,
const FBTVector pV2 
)

Calculate the dot product of two vectors.

Parameters:
pV1 1st vector.
pV2 2nd vector.
Returns:
Dot product.
FBSDK_DLL double FBLength ( const FBTVector pV )

Get the length of a vector.

Parameters:
pV Vector to calculate length for.
Returns:
Length of vector pV.
FBSDK_DLL void FBQAdd ( FBQuaternion pResult,
const FBQuaternion pQ1,
const FBQuaternion pQ2 
)

Add two quaternions together (pResult = pQ1 + pQ2)

Return values:
pResult Resulting quaternion.
Parameters:
pQ1 1st quaternion.
pQ2 2nd quaternion.
FBSDK_DLL void FBQSub ( FBQuaternion pResult,
const FBQuaternion pQ1,
const FBQuaternion pQ2 
)

Subtract pQ2 from pQ1 (pResult = pQ1 - pQ2)

Return values:
pResult Resulting quaternion.
Parameters:
pQ1 1st quaternion.
pQ2 2nd quaternion.
FBSDK_DLL void FBQMult ( FBQuaternion pResult,
const FBQuaternion pQ1,
double  pQ2 
)

Multiply pQ2 from pQ1 (pResult = pQ1 * pQ2)

Return values:
pResult Resulting quaternion.
Parameters:
pQ1 1st quaternion.
pQ2 2nd quaternion.
FBSDK_DLL void FBQMult ( FBQuaternion pResult,
const FBQuaternion pQ1,
const FBQuaternion pQ2 
)

Calculate the cross product of two quaternions.

Return values:
pResult Resulting quaternion.
Parameters:
pQ1 1st quaternion.
pQ2 2nd quaternion.
FBSDK_DLL double FBQDot ( const FBQuaternion pQ1,
const FBQuaternion pQ2 
)

Calculate the dot product of two quaternions.

Parameters:
pQ1 1st quaternion.
pQ2 2nd quaternion.
Returns:
Dot product.
FBSDK_DLL double FBQLength ( const FBQuaternion pQ )

Get the length of a quaternion.

Parameters:
pQ Quaternion to calculate length for.
Returns:
Length of quaternion pQ.
FBSDK_DLL double FBLength ( const FBVertex pV )

Get the length of a vertex (from origin)

Parameters:
pV Vertex for which length is to be measured.
Returns:
Length of vertex (from origin).
FBSDK_DLL void FBInterpolateRotation ( FBRVector pROut,
const FBRVector pR0,
const FBRVector pR1,
double  pU 
)

Interpolate a rotation in Euler space.

Return values:
pROut Resulting, interpolated rotation.
Parameters:
pR0 1st rotation.
pR1 2nd rotation.
pU Interpolation ratio.
FBSDK_DLL void FBInterpolateRotation ( FBQuaternion pQOut,
const FBQuaternion pQ0,
const FBQuaternion pQ1,
double  pU 
)

Interpolate a rotation in Quaternion.

Return values:
pQOut Resulting, interpolated rotation.
Parameters:
pQ0 1st rotation.
pQ1 2nd rotation.
pU Interpolation ratio.
FBSDK_DLL void FBGetContinuousRotation ( FBRVector pROut,
const FBRVector pR0,
const FBRVector pR1 
)

Get a continuous rotation in Euler space.

This routine will help to avoid gimble locks due to interpolation.

Return values:
pROut Successful continuous rotation (gimble-lock free).
Parameters:
pR0 Suggested next rotation.
pR1 Previous rotation.
FBSDK_DLL double FBClamp ( double  pV,
double  pL,
double  pH 
)

Clamp value.

Parameters:
pV Value to clamp.
pL Low limit.
pH High limit.
Returns:
Clamped value.
FBSDK_DLL void FBBigEndianToNative ( unsigned short &  pV )

Change from big endian to native format.

Parameters:
pV Value to modify.
FBSDK_DLL void FBLittleEndianToNative ( unsigned short &  pV )

Change from little endian to native format.

Parameters:
pV Value to modify.