| On this page | |
| Since | 20.0 |
Performs polar decomposition of matrix m into matrices rigid and stretch such that m = stretch * rigid. rigid is an orthogonal matrix that represents the closest orientation to m, and stretch is a positive semi-definite matrix that is composed of additional scaling and shearing.
Technical discussion
As stated by Ken Shoemake and Tom Duff :
“One drawback of Polar Decomposition is that there is no explicit representation of shear. … shear will be factored as rotation and stretch.”
K. Shoemake and T. Duff. Matrix Animation and Polar Decomposition. Proceedings of Graphics Interface '92, pp. 258- 264, 1992
Polar decomposition returns the closest rotation matrix to matrix m. When m contains shearing, some of the shearing is interpreted as rotation, and some as stretch. This may be important if the matrix is decomposed with the purpose of selectively recomposing the matrix while replacing various transformation components. In this case, consider using transform::Explode, which has an explict treatment for shears.
Note
If matrix m has a reflection, the rigid matrix will also contain a reflection.
入力 ¶
m:
Matrix3, Matrix4
The input matrix to decompose.
出力 ¶
rigid:
Matrix3, Matrix4
An orthogonal rotation matrix representing the closest orientation to the input matrix m.
stretch:
Matrix3
A stretch matrix composed of the additional scaling and shearing components left over once the rigid rotation matrix has been computed.
success:
Bool
Returns True if the decomposition is successful. The decomposition fails if the input matrix is singular.
| See also |