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.]])