Y从旋转矩阵旋转

时间:2012-06-10 19:10:24

标签: c++ math 3d matrix rotation

这是我的斧头。我不知道该怎么称呼它。 (是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 ++)

1 个答案:

答案 0 :(得分:3)

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

如果您想要一个跨度为360度的值,则需要使用atan2。假设您的方向确实是y的旋转,您可以使用

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