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, FBMatrix &pSrc) |
Invert a matrix. |
|
FBSDK_DLL void | FBMatrixTranspose (FBMatrix &pMatrix, FBMatrix &pSrc) |
Transpose a matrix. |
|
FBSDK_DLL void | FBMatrixMult (FBMatrix &pMatrix, FBMatrix &pA, FBMatrix &pB) |
Multiply two matrices. |
|
FBSDK_DLL void | FBVertexMatrixMult (FBVertex &pOutVertex, FBMatrix &pMatrix, FBVertex &pVertex) |
Multiply a vertex by a matrix. |
|
FBSDK_DLL void | FBVectorMatrixMult (FBVector4d &pOutVector, FBMatrix &pMatrix, FBVector4d &pVector) |
Multiply a vector by a matrix. |
|
FBSDK_DLL void | FBTranslationToMatrix (FBMatrix &pMatrix, FBTVector pVector) |
Convert a translation vector to a matrix.
|
|
FBSDK_DLL void | FBRotationToMatrix (FBMatrix &pMatrix, FBRVector pVector, FBRotationOrder pRotationOrder=kFBXYZ) |
Convert a rotation vector to a matrix.
|
|
FBSDK_DLL void | FBScalingToMatrix (FBMatrix &pMatrix, FBSVector pVector) |
Convert a scaling vector to a matrix.
|
|
FBSDK_DLL void | FBTRSToMatrix (FBMatrix &pMatrix, FBTVector pTVector, FBRVector pRVector, FBSVector pSVector) |
Convert translation, rotation, and scaling
vectors to a matrix. |
|
FBSDK_DLL void | FBMatrixToTranslation (FBTVector &pVector, FBMatrix pMatrix) |
Obtain translation vector from a matrix.
|
|
FBSDK_DLL void | FBMatrixToRotation (FBRVector &pVector, FBMatrix pMatrix, FBRotationOrder pRotationOrder=kFBXYZ) |
Obtain rotation vector from a matrix.
|
|
FBSDK_DLL void | FBMatrixToScaling (FBSVector &pVector, FBMatrix pMatrix) |
Obtain scaling vector from a matrix.
|
|
FBSDK_DLL void | FBMatrixToTRS (FBTVector &pTVector, FBRVector &pRVector, FBSVector &pSVector, FBMatrix pMatrix) |
Obtain translation, rotation, and scaling
vectors from a matrix. |
|
FBSDK_DLL void | FBRotationToQuaternion (FBQuaternion &pQuaternion, FBRVector pVector, FBRotationOrder pRotationOrder=kFBXYZ) |
Get a quaternion from a rotation vector.
|
|
FBSDK_DLL void | FBQuaternionToRotation (FBRVector &pVector, FBQuaternion pQuaternion, FBRotationOrder pRotationOrder=kFBXYZ) |
Get a rotation vector from a quaternion
vector. |
|
FBSDK_DLL void | FBGetLocalMatrix (FBMatrix &pMatrix, FBMatrix pMatrixParent, FBMatrix pMatrixChild) |
Get local matrix from parent and child
matrices. |
|
FBSDK_DLL void | FBGetGlobalMatrix (FBMatrix &pMatrix, FBMatrix pMatrixParent, 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, FBTVector &pV1, FBTVector &pV2) |
Add two vectors together (pResult =
pV1 + pV2) |
|
FBSDK_DLL void | FBSub (FBTVector &pResult, FBTVector &pV1, FBTVector &pV2) |
Subtract pV2 from pV1
(pResult = pV1 - pV2) |
|
FBSDK_DLL void | FBMult (FBTVector &pResult, FBTVector &pV1, double pV2) |
Multiply pV2 from pV1
(pResult = pV1 * pV2) |
|
FBSDK_DLL void | FBMult (FBTVector &pResult, FBTVector &pV1, FBTVector &pV2) |
Calculate the cross product of two vectors.
|
|
FBSDK_DLL void | FBMult (FBMatrix &pResult, FBMatrix &pM, FBSVector &pV) |
Calculate the cross product of a Matrix and
Scale Vector. |
|
FBSDK_DLL double | FBDot (FBTVector &pV1, FBTVector &pV2) |
Calculate the dot product of two vectors.
|
|
FBSDK_DLL double | FBLength (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 (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, FBRVector &pR0, 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.
|
Contains routines for vector and matrix manipulation.
Definition in file fbmath.h.
#define FBSDK_DLL K_DLLIMPORT |
Be sure that FBSDK_DLL is defined only once...
enum FBRotationOrder |
Specify the Euler rotation order.
FB_DEFINE_ENUM | ( | FBSDK_DLL | , |
RotationOrder | |||
) |
Invert a matrix.
pMatrix | Calculated inverse matrix. |
pSrc | Source matrix to invert. |
Transpose a matrix.
pMatrix | Calculated transpose matrix. |
pSrc | Source matrix to transpose. |
Multiply two matrices.
pMatrix | Calculated resulting matrix. |
pA | 1st matrix. |
pB | 2nd matrix. |
Multiply a vertex by a matrix.
pOutVertex | Resulting vertex. |
pMatrix | Matrix to affect the vertex with. |
pVertex | Source vertex. |
FBSDK_DLL void FBVectorMatrixMult | ( | FBVector4d & | pOutVector, |
FBMatrix & | pMatrix, | ||
FBVector4d & | pVector | ||
) |
Multiply a vector by a matrix.
pOutVector | Resulting vector. |
pMatrix | Matrix to affect the vector with. |
pVector | Source vector. |
Convert a translation vector to a matrix.
pMatrix | Calculated resulting matrix. |
pVector | Translation vector. |
FBSDK_DLL void FBRotationToMatrix | ( | FBMatrix & | pMatrix, |
FBRVector | pVector, | ||
FBRotationOrder | pRotationOrder =
kFBXYZ |
||
) |
Convert a rotation vector to a matrix.
pMatrix | Calculated resulting matrix. |
pVector | Rotation vector. |
pRotationOrder | Rotation order |
Convert a scaling vector to a matrix.
pMatrix | Calculated resulting matrix. |
pVector | Scaling vector. |
FBSDK_DLL void FBTRSToMatrix | ( | FBMatrix & | pMatrix, |
FBTVector | pTVector, | ||
FBRVector | pRVector, | ||
FBSVector | pSVector | ||
) |
Convert translation, rotation, and scaling vectors to a matrix.
pMatrix | Calculated resulting matrix. |
pTVector | Translation vector. |
pRVector | Rotation vector. |
pSVector | Scaling vector. |
Obtain translation vector from a matrix.
pVector | Extracted translation vector. |
pMatrix | Input matrix. |
FBSDK_DLL void FBMatrixToRotation | ( | FBRVector & | pVector, |
FBMatrix | pMatrix, | ||
FBRotationOrder | pRotationOrder =
kFBXYZ |
||
) |
Obtain rotation vector from a matrix.
pVector | Extracted rotation vector. |
pMatrix | Input matrix. |
pRotationOrder | Rotation Order. |
Obtain scaling vector from a matrix.
pVector | Extracted scaling vector. |
pMatrix | Input matrix. |
FBSDK_DLL void FBMatrixToTRS | ( | FBTVector & | pTVector, |
FBRVector & | pRVector, | ||
FBSVector & | pSVector, | ||
FBMatrix | pMatrix | ||
) |
Obtain translation, rotation, and scaling vectors from a matrix.
pTVector | Extracted translation vector. |
pRVector | Extracted rotation vector. |
pSVector | Extracted scaling vector. |
pMatrix | Input matrix. |
FBSDK_DLL void FBRotationToQuaternion | ( | FBQuaternion & | pQuaternion, |
FBRVector | pVector, | ||
FBRotationOrder | pRotationOrder =
kFBXYZ |
||
) |
Get a quaternion from a rotation vector.
pQuaternion | Calculated quaternion. |
pVector | Input rotation vector. |
pRotationOrder | Rotation order of the rotation vector. |
FBSDK_DLL void FBQuaternionToRotation | ( | FBRVector & | pVector, |
FBQuaternion | pQuaternion, | ||
FBRotationOrder | pRotationOrder =
kFBXYZ |
||
) |
Get a rotation vector from a quaternion vector.
pVector | Calculated rotation vector. |
pQuaternion | Input quaternion. |
pRotationOrder | Rotation order of the rotation vector. |
FBSDK_DLL void FBGetLocalMatrix | ( | FBMatrix & | pMatrix, |
FBMatrix | pMatrixParent, | ||
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.
pMatrix | Calculated local matrix. |
pMatrixParent | Parent matrix (new base referential). |
pMatrixChild | Child matrix. |
FBSDK_DLL void FBGetGlobalMatrix | ( | FBMatrix & | pMatrix, |
FBMatrix | pMatrixParent, | ||
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).
pMatrix | Calculated local matrix. |
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).
pMatrix | Orthogonalized matrix. |
pMatrix | Rotation Matrix to Orthogonalize. |
Add two vectors together (pResult = pV1 + pV2)
pResult | Resulting vector. |
pV1 | 1st vector. |
pV2 | 2nd vector. |
Subtract pV2 from pV1 (pResult = pV1 - pV2)
pResult | Resulting vector. |
pV1 | 1st vector. |
pV2 | 2nd vector. |
Multiply pV2 from pV1 (pResult = pV1 * pV2)
pResult | Resulting vector. |
pV1 | 1st vector. |
pV2 | 2nd vector. |
Calculate the cross product of two vectors.
pResult | Resulting vector. |
pV1 | 1st vector. |
pV2 | 2nd vector. |
Calculate the cross product of a Matrix and Scale Vector.
pResult | Resulting Matrix. |
pM | Matrix. |
pV | vector. |
Calculate the dot product of two vectors.
pV1 | 1st vector. |
pV2 | 2nd vector. |
FBSDK_DLL double FBLength | ( | FBTVector & | pV | ) |
Get the length of a vector.
pV | Vector to calculate length for. |
FBSDK_DLL void FBQAdd | ( | FBQuaternion & | pResult, |
const FBQuaternion & | pQ1, | ||
const FBQuaternion & | pQ2 | ||
) |
Add two quaternions together (pResult = pQ1 + pQ2)
pResult | Resulting quaternion. |
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)
pResult | Resulting quaternion. |
pQ1 | 1st quaternion. |
pQ2 | 2nd quaternion. |
FBSDK_DLL void FBQMult | ( | FBQuaternion & | pResult, |
const FBQuaternion & | pQ1, | ||
double | pQ2 | ||
) |
Multiply pQ2 from pQ1 (pResult = pQ1 * pQ2)
pResult | Resulting quaternion. |
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.
pResult | Resulting quaternion. |
pQ1 | 1st quaternion. |
pQ2 | 2nd quaternion. |
FBSDK_DLL double FBQDot | ( | const FBQuaternion & | pQ1, |
const FBQuaternion & | pQ2 | ||
) |
Calculate the dot product of two quaternions.
pQ1 | 1st quaternion. |
pQ2 | 2nd quaternion. |
FBSDK_DLL double FBQLength | ( | const FBQuaternion & | pQ | ) |
Get the length of a quaternion.
pQ | Quaternion to calculate length for. |
FBSDK_DLL double FBLength | ( | FBVertex & | pV | ) |
Get the length of a vertex (from origin)
pV | Vertex for which length is to be measured. |
FBSDK_DLL void FBInterpolateRotation | ( | FBRVector & | pROut, |
const FBRVector & | pR0, | ||
const FBRVector & | pR1, | ||
double | pU | ||
) |
Interpolate a rotation in Euler space.
pROut | Resulting, interpolated rotation. |
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.
pQOut | Resulting, interpolated rotation. |
pQ0 | 1st rotation. |
pQ1 | 2nd rotation. |
pU | Interpolation ratio. |
Get a continuous rotation in Euler space.
This routine will help to avoid gimble locks due to interpolation.
pROut | Successful continuous rotation (gimble-lock free). |
pR0 | Suggested next rotation. |
pR1 | Previous rotation. |
FBSDK_DLL double FBClamp | ( | double | pV, |
double | pL, | ||
double | pH | ||
) |
Clamp value.
pV | Value to clamp. |
pL | Low limit. |
pH | High limit. |
FBSDK_DLL void FBBigEndianToNative | ( | unsigned short & | pV | ) |
FBSDK_DLL void FBLittleEndianToNative | ( | unsigned short & | pV | ) |
Change from little endian to native format.
pV | Value to modify. |