scipy.spatial.transform.Rotation.

__pow__#

Вращение.__pow__(self, float n, модуль)#

Скомбинировать это вращение с самим собой n раз.

Композиция вращения p с самим собой может быть расширено до нецелых n рассматривая степень n быть масштабным коэффициентом, применяемым к углу поворота вокруг фиксированной оси вращения. Выражение q = p ** n также может быть выражено как q = Rotation.from_rotvec(n * p.as_rotvec()).

Если n отрицательно, то вращение инвертируется перед применением степени. Другими словами, p ** -abs(n) == p.inv() ** abs(n).

Параметры:
nfloat

Количество раз, которое вращение композируется само с собой.

модульNone

Это переопределённый аргумент, неприменимый к Rotations и должен быть None.

Возвращает:
степеньRotation экземпляр

Если входной Rotation p содержит N несколько вращений, тогда выходные данные будут содержать N вращения, где i вращение th равно p[i] ** n

Примечания

Например, степень 2 удвоит угол поворота, а степень 0.5 уменьшит его вдвое. Есть три примечательных случая: если n == 1 тогда возвращается исходное вращение, если n == 0 тогда возвращается тождественное вращение, и если n == -1 затем p.inv() возвращается.

Обратите внимание, что дробные степени n которые фактически извлекают корень вращения, делают это с использованием кратчайшего пути наименьшего представления этого угла (главный корень). Это означает, что степени n и 1/n не обязательно являются обратными друг другу. Например, степень 0.5 поворота на +240 градусов будет вычислена как степень 0.5 поворота на -120 градусов, с результатом поворота на -60, а не на +120 градусов.

Примеры

>>> from scipy.spatial.transform import Rotation as R

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

>>> p = R.from_rotvec([1, 0, 0])
>>> q = p ** 2
>>> q.as_rotvec()
array([2., 0., 0.])
>>> r = p ** 0.5
>>> r.as_rotvec()
array([0.5, 0., 0.])

Обратные степени не обязательно сокращаются:

>>> p = R.from_rotvec([0, 0, 120], degrees=True)
>>> ((p ** 2) ** 0.5).as_rotvec(degrees=True)
array([  -0.,   -0., -60.])