1

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

4

1 回答 1

3

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

如果你想要一个跨越 360 度的值,你需要使用atan2. 假设您的方向确实是关于 y 的旋转,您可以使用

Degree(atan2(orientmatrix[0][2], orientmatrix[0][0]))
于 2012-06-10T20:08:48.967 回答