微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么.apply不像我期望的那样应用旋转?

如何解决为什么.apply不像我期望的那样应用旋转?

(Pdb) R.from_matrix(R_xy).apply(centered_points[599,:])
array([-0.02405325,0.00502445,0.06892317])
(Pdb) (R_xy @ centered_points[599,:].T).T
array([-0.02449478,0.00437224,0.06888685])

我希望第二行正确地对centered_points进行旋转。 centered_points是1024、3的向量。视觉上,当我检查结果时,#2是正确的,而Scipy是错误的。有什么作用?

解决方法

我发现了这个问题:我是从非完全正交向量生成R_xy的。这会使rot.apply混淆所有计算

,

我无法重现此行为:

from scipy.spatial.transform import Rotation

rot = Rotation.from_quat((0.7,0.6,0.5,0.4))
# array([[ 0.03174603,0.34920635,0.93650794],#        [ 0.98412698,-0.17460317,0.03174603],#        [ 0.17460317,0.92063492,-0.34920635]])

x = [3,2,1]
y1 = rot.as_matrix() @ x
# array([1.73015873,2.63492063,2.01587302])
y2 = rot.apply(x)
# array([1.73015873,2.01587302])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。