Матрица вращения в углы Эйлера

Я использую следующий код для преобразования матрицы вращения 3X3 в углы:

(_r = double [9])

double angleZ=atan2(_r[3], _r[4])* (float) (180.0 / CV_PI);
double angleX=180-asin(-1*_r[5])* (float) (180.0 / CV_PI);
double angleY=180-atan2(_r[2],_r[8])* (float) (180.0 / CV_PI);

вот маленький помощник

_r[0] _r[1] _r[2]
_r[3] _r[4] _r[5]
_r[6] _r[7] _r[8]

Есть ли в этом смысл ? потому что углы кажутся слишком ... взаимозависимыми? x y z все реагируют на изменение одной позы ...

матрица вращения получена из функции opencv cvPOSIT, так что интересующие вас объекты могут быть неправильными и приводить в замешательство ...

но почему-то я думаю, что я просто делаю преобразование неправильно :)

Я применяю углы в opengl к кубу:

glRotatef(angleX,1.0f,0.0f,0.0f);
glRotatef(angleY,0.0f,1.0f,0.0f);
glRotatef(angleZ,0.0f,0.0f,1.0f);

Ответы на вопрос(1)

Ваш ответ на вопрос