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)。- 参数:
- n浮动
旋转自身组合的次数。
- 模数无
此重写的参数不适用于旋转,必须为
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.])