Back to class index
float3x4[Class Summary]
v
zero[static][const]
identity[static][const]
nan[static][const]
ctor (+6 overloads)
GetScale()[const]
operator[](row) (+1 overload)
At(row,col) (+1 overload)
Row(row) (+1 overload)
Row3(row) (+1 overload)
Col(col)[const]
Col3(col)[const]
Diagonal()[const]
ScaleRow3(row,scalar)
ScaleRow(row,scalar)
ScaleCol(col,scalar)
Float3x3Part()[const]
TranslatePart()[const]
RotatePart()[const]
PositiveX/Y/Z()[const]
ptr() (+1 overload)
SetRow(row,data) (+3 overloads)
SetCol(column,data) (+2 overloads)
Set(...) (+3 overloads)
Set3x3Part(rotation)
SetIdentity()
SwapColumns(col1,col2)
SwapRows(row1,row2)
SetTranslatePart(tx,ty,tz) (+1 overload)
SetRotatePart/X/Y/Z(...) (+2 overloads)
operator=(rhs) (+2 overloads)
Determinant()[const]
Inverse(epsilon)
Inverted()[const]
InverseColOrthogonal()
InverseOrthogonalUniformScale()
InverseOrthonormal()
Transpose3()
Transposed3()[const]
InverseTranspose()
InverseTransposed()[const]
Trace()[const]
Orthonormalize(...)
RemoveScale()
TransformPos(pointVector)[const] (+1 overload)
TransformDir(directionVector)[const] (+2 overloads)
Transform(vector)[const]
BatchTransformPos(...)[const] (+3 overloads)
BatchTransformDir(...)[const] (+3 overloads)
BatchTransform(...)[const] (+1 overload)
operator*(rhs)[const] (+4 overloads)
operator/(scalar)[const]
operator+(rhs)[const]
operator-(rhs)[const] (+1 overload)
operator+()[const]
operator*=(scalar)
operator/=(scalar)
operator+=(rhs)
operator-=(rhs)
IsFinite()[const]
IsIdentity(epsilon)[const]
IsLowerTriangular(epsilon)[const]
IsUpperTriangular(epsilon)[const]
IsInvertible(epsilon)[const]
IsSymmetric(epsilon)[const]
IsSkewSymmetric(epsilon)[const]
HasUnitaryScale(epsilonSq)[const]
HasNegativeScale()[const]
HasUniformScale(epsilon)[const]
IsRowOrthogonal(epsilon)[const]
IsColOrthogonal(epsilon)[const]
IsColOrthogonal3(epsilon)[const]
IsOrthonormal(epsilon)[const]
Equals(other,epsilon)[const]
ToString()[const]
SerializeToString()[const]
ToString2()[const]
ToEuler***()[const]
ExtractScale()[const]
Decompose(...)[const] (+2 overloads)
Mul(rhs)[const] (+3 overloads)
MulPos(pointVector)[const] (+1 overload)
MulDir(directionVector)[const] (+1 overload)
Mul(vector)[const]
Translate(tx,ty,tz)[static] (+2 overloads)
RotateX/Y/Z(...)[static] (+1 overload)
RotateAxisAngle(...)[static] (+1 overload)
RotateFromTo(...)[static] (+1 overload)
RandomGeneral(...)[static]
RandomRotation(lcg)[static]
FromQuat(orientation)[static] (+1 overload)
FromTRS(...)[static] (+2 overloads)
FromEuler***(ex,ey,ex2)[static]
Scale(sx,sy,sz)[static] (+4 overloads)
ScaleAlongAxis(...)[static] (+1 overload)
UniformScale(uniformScale)[static] (+1 overload)
ShearX/Y/Z(yFactor,zFactor)[static]
Mirror(p)[static]
OrthographicProjection/YZ/XZ/XY(target)[static]
LookAt(...)[static] (+1 overload)

float3x4::Decompose

Syntax

void float3x4::Decompose(float3 &translate, Quat &rotate, float3 &scale) const; [11 lines of code]
void float3x4::Decompose(float3 &translate, float3x3 &rotate, float3 &scale) const; [19 lines of code]
void float3x4::Decompose(float3 &translate, float3x4 &rotate, float3 &scale) const; [12 lines of code]

Decomposes this matrix to translate, rotate and scale parts.

This function decomposes this matrix M to a form M = T * R * S, where T is a translation matrix, R a rotation matrix and S a scale matrix.

Note
Remember that in the convention of this class, transforms are applied in the order M * v, so scale is applied first, then rotation, and finally the translation last. This function assumes that this matrix does not contain projection (the fourth row of this matrix is [0 0 0 1]).

Parameters

float3 &translate [out]This vector receives the translation component this matrix performs. The translation is applied last after rotation and scaling.Quat &rotate [out]This object receives the rotation part of this transform.float3 &scale [out]This vector receives the scaling along the local (before transformation by R) X, Y and Z axes performed by this matrix.