从旋转矩阵Y轴旋转(Y rotation from rotation matrix)

2019-10-16 20:08发布

这里是我的轴。 我不知道该怎么称呼它。 (是否ZXY?)(这是摄像头看到的)

我想知道绕Y轴的平面内旋转。 目前,它是围绕Y. 0度

这里是我做的,

Matrix33 orientmatrix = body->getGlobalOrientation();
return Degree(-asin(orientmatrix[2][0]));

此返回不正确的角度,逆时针:0..45..90..45..0 ..- 45 ..- 90 ..- 45..0

它应该是:0 ... 45..90..135..180 ..- 45 ..- 90 ..- 135..0

我究竟做错了什么?

谢谢。

(这是OGRE,代码是C ++)

Answer 1:

你在做什么错的是你正在使用asin 。 它-pi / 2之间的值返回到+ pi / 2,或-90度到+90度。

如果你想跨越360度的值,你需要使用atan2 。 真正假设你的方向是关于Y轴旋转,你可以使用

Degree(atan2(orientmatrix[0][2], orientmatrix[0][0]))


文章来源: Y rotation from rotation matrix