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
。
- 返回值:
- power
Rotation
实例 如果输入旋转
p
包含N
个多个旋转,则输出将包含N
个旋转,其中第i
个旋转等于p[i] ** n
- power
注释
例如,2 的幂将使旋转角度加倍,0.5 的幂将使旋转角度减半。有三个值得注意的情况:如果
n == 1
,则返回原始旋转;如果n == 0
,则返回恒等旋转;如果n == -1
,则返回p.inv()
。请注意,分数幂
n
实际上是求旋转的根,它是使用该角度的最短路径最小表示(主根)来进行的。这意味着n
和1/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.])