У меня есть 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);
Но это не работает.
Любая идея ?
Почему вы испортили проекционную матрицу. Прежде чем вращать куб, перейдите в 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);
Других решений пока нет …