__mul__#
- Вращение.__mul__(self, Вращение other)#
Скомбинируйте это вращение с другим.
Если p и q являются двумя вращениями, тогда композиция ‘q, за которым следует p’ эквивалентна p * q. В терминах матриц вращения, композиция может быть выражена как
p.as_matrix() @ q.as_matrix().- Параметры:
- other
Rotationэкземпляр Объект, содержащий вращения для композиции с этим. Обратите внимание, что композиции вращений не коммутативны, поэтому
p * qобычно отличается отq * p.
- other
- Возвращает:
- композиция
Rotationэкземпляр Эта функция поддерживает композицию нескольких поворотов одновременно. Возможны следующие случаи:
Либо
pилиqсодержит одно вращение. В этом случае композиция содержит результат композиции каждого вращения в другом объекте с единичным вращением.Оба
pиqсодержатьNвращения. В этом случае каждое вращениеp[i]составляется с соответствующим вращениемq[i]и вывод содержитNвращения.
- композиция
Примеры
>>> from scipy.spatial.transform import Rotation as R >>> import numpy as np
Композиция двух одиночных вращений:
>>> p = R.from_quat([0, 0, 1, 1]) >>> q = R.from_quat([1, 0, 0, 1]) >>> p.as_matrix() array([[ 0., -1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]]) >>> q.as_matrix() array([[ 1., 0., 0.], [ 0., 0., -1.], [ 0., 1., 0.]]) >>> r = p * q >>> r.as_matrix() array([[0., 0., 1.], [1., 0., 0.], [0., 1., 0.]])
Композиция двух объектов, содержащих равное количество вращений:
>>> p = R.from_quat([[0, 0, 1, 1], [1, 0, 0, 1]]) >>> q = R.from_rotvec([[np.pi/4, 0, 0], [-np.pi/4, 0, np.pi/4]]) >>> p.as_quat() array([[0. , 0. , 0.70710678, 0.70710678], [0.70710678, 0. , 0. , 0.70710678]]) >>> q.as_quat() array([[ 0.38268343, 0. , 0. , 0.92387953], [-0.37282173, 0. , 0.37282173, 0.84971049]]) >>> r = p * q >>> r.as_quat() array([[ 0.27059805, 0.27059805, 0.65328148, 0.65328148], [ 0.33721128, -0.26362477, 0.26362477, 0.86446082]])