2015-11-18 2 views
2

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

Я хотел бы повернуть куб на свою ось.

Например: Я перемещаю свой куб справа налево: мой куб должен вращаться на левом переднем конце вершины около 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); 

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

ответ

0

Почему вы испортили матрицу проекции. Перед вращением куба перейдите к 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

@Roma Kap: Помог ли мой ответ. – Mykola