scipy.spatial.transform.Rotation.

__pow__#

Rotation.__pow__()#

将此旋转与自身组合 n 次。

旋转 p 与自身的组合可以通过将指数 n 视为应用于旋转固定轴旋转角度的缩放因子来扩展到非整数 n。表达式 q = p ** n 也可以表示为 q = Rotation.from_rotvec(n * p.as_rotvec())

如果 n 为负数,则在应用幂之前会对旋转进行反转。换句话说,p ** -abs(n) == p.inv() ** abs(n)

参数:
nfloat

将旋转与自身组合的次数。

modulusNone

此被覆盖的参数不适用于旋转,必须为 None

返回值:
powerRotation 实例

如果输入旋转 p 包含 N 个多个旋转,则输出将包含 N 个旋转,其中第 i 个旋转等于 p[i] ** n

注释

例如,2 的幂将使旋转角度加倍,0.5 的幂将使旋转角度减半。有三个值得注意的情况:如果 n == 1,则返回原始旋转;如果 n == 0,则返回恒等旋转;如果 n == -1,则返回 p.inv()

请注意,分数幂 n 实际上是求旋转的根,它是使用该角度的最短路径最小表示(主根)来进行的。这意味着 n1/n 的幂不一定是彼此的逆。例如,+240 度旋转的 0.5 次方将被计算为 -120 度旋转的 0.5 次方,结果是 -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.])