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