Im пытается сделать простое вращение куба вокруг оси х и у:OpenGL кватернионов вращения матрицы
Я хочу всегда вращать куб по оси х на величину х и вращать куб над YAxis на величину у, не зависящий от поворота оси х
первого я наивно сделали:
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
затем
, но что первые Повороты ов er x затем вращается над y Я хочу повернуть на 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.
это кватернионы, как идти, или я должен использовать что-то другое? И если кватернионы - это способ пойти, какие шаги я могу добавить, чтобы заставить куб вращаться независимо от каждой оси. я думаю, что кто-то имеет тот же вопрос: Rotating OpenGL scene in 2 axes
ок позвольте мне сказать, что это так ... то, что я хочу сделать, это повернуть куб с помощью мыши. Я хочу, чтобы левый справа управлял поворотами оси y по экрану, а затем вверх вниз, чтобы управлять поворотами оси x. Я хочу, чтобы они вращались независимо от другой оси, но только вращаются на экранах глобальной оси. Если я делаю 2 glRotations, я не получаю этого поведения, потому что вращение одной оси взаимно изменяет друг друга. – yeahdixon
Например, вращающийся куб: Операции без поворотов показывают только одну сторону затем я делаю glRotatef (90,1,0,0); \t glRotatef (45,0,1,0); \t ⁃ \t дает мне наклонный куб (бриллиант), когда мне нужен куб, у которого был угол, обращенный к камере, который на самом деле был бы результатом замены операций: \t glRotatef (45,0,1,0); \t glRotatef (90,1,0,0); Я бы просто поменял команды поворота, но это столкнулось с теми же проблемами, когда значения угла перевернуты. – yeahdixon