OpenGL вращает 3D куб на собственной оси

У меня есть 3D-куб, и я хочу повернуть его, но не используя оси X, Y, Z.

Я хотел бы вращать куб на своей собственной оси.

Например: я перемещаю свой куб справа налево: мой куб должен вращаться вокруг нижней левой оси вершины примерно на 90 градусов, а не по оси Z примерно на 90 градусов.

Я попробовал это:

//prespektive...
gluPerspective(45,1.0,2.0,30.0);
//look at...
gluLookAt(0.0,2.0,  -4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);
//try to rotate cube on bottom-right-axis
glTranslatef(-(-0.7), 0.40, -(-0.25));
glRotatef(90, 1,0,0);
glRotatef(90, 0,1,0);
glRotatef(90, 0,0,1);
glTranslatef(-0.7, 0.40, -0.25);

Но это не работает.
Любая идея ?

2

Решение

Почему вы испортили проекционную матрицу. Прежде чем вращать куб, перейдите в MODELVIEW матричный режим

// Setup the projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

gluPerspective(45,1.0,1.0,30.0); // front clip plane to 1.0

// Now go to modelview
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

//look at...
gluLookAt(0.0,2.0,  -4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);
//try to rotate cube on bottom-right-axis
glTranslatef(-(-0.7), 0.40, -(-0.25));
glRotatef(90, 1,0,0);
glRotatef(90, 0,1,0);
glRotatef(90, 0,0,1);
glTranslatef(-0.7, 0.40, -0.25);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]