Я пытаюсь добиться поворота объекта вокруг 3 осей, увеличивая значения углов поворота для осей и отображая эти оси, чтобы сделать следующее направление вращения предсказуемым для зрителя.Но после нескольких поворотов, только вращение вокруг оси Z выполняется в соответствии с отображаемой осью.Есть ли шанс, что это можно сделать просто, не разбирая кватернионы?
glPushMatrix ();
glRotatef (angleX, 1.0, 0.0, 0.0);
glRotatef (angleY, 0.0, 1.0, 0.0);
glRotatef (angleZ, 0.0, 0.0, 1.0);
glBegin(GL_LINES);
glVertex3f(80.0, 0.0, 0.0); //x axis
glVertex3f(-80.0, 0.0, 0.0);
glVertex3f(0.0, 80.0, 0.0); //y axis
glVertex3f(0.0, -80.0, 0.0);
glVertex3f( 0.0, 0.0, 80.0); //z axis
glVertex3f( 0.0, 0.0, -80.0);
//here is some code for drawing arrows at axes ends
glEnd();
glPopMatrix();
Редактировать: У меня есть такие оси: http://img841.imageshack.us/i/arrowsx.jpg/ angleX, angleY, angleZглобальные значения увеличиваются при нажатии клавиши - например, после нажатия клавиши «A» угол X увеличивается на 10, и я ожидаю, что после этого ось X не будет двигаться, а оси Y и Z будут вращаться вокруг оси X. Но это верно только тогда, когда я изменяю только однуугловых переменных.После поворота более чем на одну ось, когда я меняюсь, например, на угол X - все оси на рисунке изменят свое положение