scipy.spatial.transform.RigidTransform.

from_matrix#

метод класса RigidTransform.from_matrix(cls, матрица)#

Инициализировать из матрицы преобразования 4x4.

Параметры:
матрицаarray_like, форма (4, 4) или (N, 4, 4)

Одна матрица преобразования или стек матриц преобразования.

Возвращает:
преобразоватьRigidTransform экземпляр

Примечания

Матрицы жесткого преобразования 4x4 имеют вид:

[R | t] [0 | 1]

где R является матрицей вращения 3x3 и t является 3x1 вектором смещения [tx, ty, tz]. Поскольку матрицы поворота должны быть правильными ортогональными, компонент поворота ортонормируется с использованием сингулярного разложения перед инициализацией.

Примеры

>>> from scipy.spatial.transform import RigidTransform as Tf
>>> import numpy as np

Создание преобразования из одной матрицы:

>>> m = np.array([[0, 1, 0, 2],
...               [0, 0, 1, 3],
...               [1, 0, 0, 4],
...               [0, 0, 0, 1]])
>>> tf = Tf.from_matrix(m)
>>> tf.as_matrix()
array([[0., 1., 0., 2.],
       [0., 0., 1., 3.],
       [1., 0., 0., 4.],
       [0., 0., 0., 1.]])
>>> tf.single
True

Создание преобразования из стека матриц:

>>> m = np.array([np.eye(4), np.eye(4)])
>>> tf = Tf.from_matrix(m)
>>> tf.as_matrix()
array([[[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]],
       [[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]]])
>>> tf.single
False
>>> len(tf)
2

Матрицы с компонентом вращения, который не является собственным ортогональным, ортогонализируются с использованием сингулярного разложения перед инициализацией:

>>> tf = Tf.from_matrix(np.diag([2, 2, 2, 1]))
>>> tf.as_matrix()
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])