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::InverseOrthonormal

Syntax

void float3x4::InverseOrthonormal(); [42 lines of code]

Inverts a matrix that is a concatenation of only translate and rotate operations.

If a matrix is of form M=T*R*S, where T is an affine translation matrix, R is a rotation matrix and S is either identity or a mirroring matrix, then the matrix M is orthonormal and this function can be used to compute the inverse. This function is faster than calling InverseOrthogonalUniformScale(), InverseColOrthogonal() or the generic Inverse(). This function may not be called if this matrix contains any scaling or shearing, but it may contain mirroring.