2012-06-10 2 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])) 
Смежные вопросы