繁体   English   中英

在 from_euler 之后使用 as_euler 时,欧拉角会发生变化

[英]Euler angles change when using as_euler after from_euler

你能解释一下这里发生了什么吗?

from scipy.spatial.transform import Rotation as R

euler_angles1 = [ -150, -180, -120 ]
rotation1 = R.from_euler("xyz", euler_angles1,degrees=True)
print(rotation1.as_euler("xyz",degrees=True))

euler_angles2 = [ -114, -83, -68 ]
rotation2 = R.from_euler("xyz", euler_angles2,degrees=True)
print(rotation2.as_euler("xyz",degrees=True))

Output:

array([ 30., 0., 60])
array([ -114., -83., -68.])

似乎有些角度变成了pi - angle ,而其他角度保持原样。 有规则吗? 是否可以选择让 output 欧拉角与输入的欧拉角保持相同?

Scipy 版本:1.5.4 Numpy 版本:1.19.5

我试过上面的代码。 我的期望是在使用from_euleras_euler后角度将保持不变

他们是等价的。 有一些直觉,可能应该有不止一种方法,一组欧拉角,来实现相同的旋转。

scipy 很可能在内部表示旋转,而不是您传入的欧拉角,而是更通用的东西,如四元数。 因此,当您要求返回欧拉角时,会重新计算欧拉角,并且您收到的值在功能上是等效的。

> rot1 = R.from_euler("xyz", [-150, -180, -120], degrees=True)
> rot2 = R.from_euler("xyz", [30, 0, 60], degrees=True)
> rot1.as_matrix() @ [1, 2, 3]
array([0.29903811, 0.98205081, 3.59807621])

> rot2.as_matrix() @ [1, 2, 3]
array([0.29903811, 0.98205081, 3.59807621])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM