2012-06-10 232 views
1

這是我的座標軸。我不知道該怎麼稱呼它。 (是否ZXY?) (這是攝像頭看到的)從旋轉矩陣Y旋轉

我想知道繞Y軸的平面內旋轉。目前,它是0度左右Y.

這裏是我做的,

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++)

回答

3

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

如果您想要一個跨越360度的值,您需要使用atan2。假設你的方向真的是一個關於y的旋轉,你可以使用

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