Я пытаюсь сделать простое вращение куба вокруг осей x и y:
Я хочу всегда вращать куб по оси x на величину x и вращать куб по оси Y наколичество y, не зависящее от вращения оси x
сначала я наивно сделал:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
затем
, но это сначала вращается по x, а затем вращается по yi.y независимо от доступа x.
Я начал изучать кватернионы, поэтому я попытался:
Quaternion Rotation1;
Rotation1.createFromAxisAngle(0,1, 0, globalRotateY);
Rotation1.normalize();
Quaternion Rotation2;
Rotation2.createFromAxisAngle(1,0, 0, globalRotateX);
Rotation2.normalize();
GLfloat Matrix[16];
Quaternion q=Rotation2 * Rotation1;
q.createMatrix(Matrix);
glMultMatrixf(Matrix);
, который почти полностью выполняет то, что было достигнуто, выполняя 2 последовательных glRotates ... так что я думаюя пропускаю шаг или 2.
это кватернионы, путь или я должен использовать что-то другое?И если кватернионы - это путь, какие шаги я могу добавить, чтобы куб вращался независимо от каждой оси.я думаю, что у кого-то еще есть та же проблема: Вращение OpenGL сцены в 2 осях