decomposeAffine: Decompose an affine matrix into its constituent...

Description Usage Arguments Value Note Author(s) See Also

Description

An affine matrix is composed of translation, scale, skew and rotation transformations. This function extracts these components, after first inverting the matrix so that it transforms from source to target space.

Usage

1

Arguments

affine

A 4x4 matrix representing an affine transformation matrix.

Value

A list with components:

scaleMatrix

A 3x3 matrix representing only the scale operation embodied in the full affine transformation.

skewMatrix

A 3x3 matrix representing only the skew operation embodied in the full affine transformation.

rotationMatrix

A 3x3 matrix representing only the rotation operation embodied in the full affine transformation.

translation

A length-3 named numeric vector representing the translations (in pixunits units) in each of the X, Y and Z directions.

scales

A length-3 named numeric vector representing the scale factors in each of the X, Y and Z directions. Scale factors of 1 represent no effect.

skews

A length-3 named numeric vector representing the skews in each of the XY, XZ and YZ planes.

angles

A length-3 named numeric vector representing the rotation angles (in radians) about each of the X, Y and Z directions, i.e., roll, pitch and yaw.

Note

The decomposition is not perfect, and there is one particular degenerate case when the pitch angle is very close to pi/2 radians, known as “Gimbal lock”. In this case the yaw angle is arbitrarily set to zero.

Affine matrices embodying rigid-body transformations include only 6 degrees of freedom, rather than the full 12, so skews will always be zero and scales will always be unity (to within rounding error). Likewise, affine matrices derived from 2D registration will not include components relating to the Z direction.

Author(s)

Jon Clayden <code@clayden.org>

See Also

buildAffine, isAffine



Search within the RNiftyReg package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.