{ } Raw JSON

bundles / scipy 1.18.0 / scipy / spatial / transform / _rigid_transform / RigidTransform / as_components

function

scipy.spatial.transform._rigid_transform:RigidTransform.as_components

source: /scipy/spatial/transform/_rigid_transform.py:1159

Signature

def as_components(self) → tuple[Array, Rotation]

Summary

Return the translation and rotation components of the transform, where the rotation is applied first, followed by the translation.

Extended Summary

4x4 rigid transformation matrices are of the form

[       tx]
[   R   ty]
[       tz]
[ 0 0 0  1]

Where R is a 3x3 orthonormal rotation matrix and t = [tx, ty, tz] is a 3x1 translation vector. This function returns the rotation corresponding to this rotation matrix r = Rotation.from_matrix(R) and the translation vector t.

When applying a transform tf to a vector v, the result is the same as if the rotation and translation components were applied to the vector with the following operation: tf.apply(v) == translation + rotation.apply(v).

Returns

translation : numpy.ndarray, shape (..., 3)

The translation of the transform.

rotation : `Rotation` instance

The rotation of the transform.

Examples

from scipy.spatial.transform import RigidTransform as Tf
from scipy.spatial.transform import Rotation as R
import numpy as np
✓
Recover the rotation and translation from a transform:
t = np.array([2, 3, 4])
r = R.from_matrix([[0, 0, 1],
                   [1, 0, 0],
                   [0, 1, 0]])
tf = Tf.from_components(t, r)
t, r = tf.as_components()
t
r.as_matrix()
✓
array([[0., 0., 1.],
       [1., 0., 0.],
       [0., 1., 0.]])
The transform applied to a vector is equivalent to the rotation applied to the vector, followed by the translation:
t + r.apply([1, 0, 0])
tf.apply([1, 0, 0])
✓
array([2., 4., 4.])

Aliases

  • scipy.spatial.transform.RigidTransform.as_components