scipy.spatial.transform.RigidTransform.

as_components#

RigidTransform.as_components(self)#

Возвращает компоненты трансляции и вращения преобразования, где вращение применяется первым, за которым следует трансляция.

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

[R | t] [0 | 1]

Где R является ортонормированной матрицей вращения 3x3 и t является вектором сдвига 3x1 [tx, ty, tz]. Эта функция возвращает вращение, соответствующее этой матрице вращения r = Rotation.from_matrix(R) и вектор переноса t.

Применить преобразование tf и вектор v. При применении преобразования к вектору результат такой же, как если бы преобразование было применено к вектору следующим образом: tf.apply(v) == translation + rotation.apply(v)

Возвращает:
переводnumpy.ndarray, форма (N, 3) или (3,)

Перевод преобразования.

вращениеRotation экземпляр

Вращение преобразования.

Примеры

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

Восстановить вращение и перемещение из преобразования:

>>> 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)
>>> tf_t, tf_r = tf.as_components()
>>> tf_t
array([2., 3., 4.])
>>> tf_r.as_matrix()
array([[0., 0., 1.],
       [1., 0., 0.],
       [0., 1., 0.]])

Преобразование, применённое к вектору, эквивалентно вращению, применённому к вектору, за которым следует перенос:

>>> r.apply([1, 0, 0])
array([0., 1., 0.])
>>> t + r.apply([1, 0, 0])
array([2., 4., 4.])
>>> tf.apply([1, 0, 0])
array([2., 4., 4.])