Back to class index
float3x3[Class Summary]
v
zero[static][const]
identity[static][const]
nan[static][const]
ctor (+3 overloads)
ToQuat()[const]
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]
ScaleRow(row,scalar)
ScaleCol(col,scalar)
PositiveX/Y/Z()[const]
ptr() (+1 overload)
SetRow(row,data) (+2 overloads)
SetCol(column,data) (+2 overloads)
Set(...) (+3 overloads)
SetIdentity()
SwapColumns(col1,col2)
SwapRows(row1,row2)
SetRotatePart/X/Y/Z(...) (+1 overload)
operator=(rhs) (+1 overload)
Determinant()[const]
DeterminantSymmetric()[const]
Inverse(epsilon)
InverseFast(epsilon)
SolveAxb(b,x)[const]
Inverted()[const]
InverseColOrthogonal()
InverseOrthogonalUniformScale()
InverseOrthonormal()
InverseSymmetric()
Transpose()
Transposed()[const]
InverseTranspose()
InverseTransposed()[const]
Trace()[const]
Orthonormalize(...)
RemoveScale()
Transform(vector)[const] (+1 overload)
TransformLeft(lhs)[const]
Transform(vector)[const]
BatchTransform(...)[const] (+3 overloads)
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(rotate,scale)[const] (+1 overload)
Mul(rhs)[const] (+5 overloads)
MulPos(rhs)[const] (+1 overload)
MulDir(rhs)[const] (+1 overload)
RotateX/Y/Z(angleRadians)[static]
RotateAxisAngle(...)[static]
RotateFromTo(...)[static]
LookAt(...)[static]
RandomRotation(lcg)[static]
RandomGeneral(...)[static]
FromQuat(orientation)[static]
FromRS(rotate,scale)[static] (+1 overload)
FromEuler***(ex,ey,ex2)[static]
Scale(sx,sy,sz)[static] (+1 overload)
ScaleAlongAxis(axis,scalingFactor)[static]
UniformScale(uniformScale)[static]
ShearX/Y/Z(yFactor,zFactor)[static]
Mirror(p)[static]
OrthographicProjection/YZ/XZ/XY(target)[static]

float3x3::InverseOrthogonalUniformScale

Syntax

bool float3x3::InverseOrthogonalUniformScale(); [27 lines of code]

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

If a matrix is of form M=R*S, where R is a rotation matrix and S is a diagonal matrix with non-zero and uniform scaling factors (possibly mirroring), then the matrix M is both column- and row-orthogonal and this function can be used to compute the inverse. This function is faster than calling InverseColOrthogonal() or the generic Inverse(). Returns true on success. On failure, the matrix is not modified. This function fails if any of the elements of this vector are not finite, or if the matrix contains a zero scaling factor on X, Y or Z. This function may not be called if this matrix contains any shearing or nonuniform scaling.