这是我的斧头。我不知道该怎么称呼它。 (是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 ++)
答案 0 :(得分:3)
你做错了就是你正在使用asin
。它返回介于-pi / 2到+ pi / 2之间的值,或-90度到+90度之间的值。
如果您想要一个跨度为360度的值,则需要使用atan2
。假设您的方向确实是y的旋转,您可以使用
Degree(atan2(orientmatrix[0][2], orientmatrix[0][0]))