【发布时间】:2014-04-24 07:22:43
【问题描述】:
我正在尝试旋转默认位置指向右侧的对象(箭头)。我一直在环顾四周,我正在使用 glLoadIdentity() 和 glPushMatrix() 和 glPopMatrix() 作为仅在我的 glBegin 函数中旋转对象而不是整个场景的方法:
glLoadIdentity();
glPushMatrix();
glRotatef(5, 0.0f, 0.0f, 1.0f);
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f, 0.0f, 1.0f);
glVertex2f(xx2-0.01, yy2);
glVertex2f(xx2-0.06, yy2+0.03);
glVertex2f(xx2-0.06, yy2-0.03);
glEnd();
glPopMatrix();
但是,它也会翻译我的箭头,而不仅仅是旋转它。我需要将偏移量转换回原来的位置吗?还是我做错了什么?
已解决:
glLoadIdentity();
glPushMatrix();
glTranslatef(xx2, yy2, 0);
glRotatef(45, 0.0f, 0.0f, 1.0f);
glTranslatef(-xx2, -yy2, 0);
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f, 0.0f, 1.0f);
glVertex2f(xx2-0.01, yy2);
glVertex2f(xx2-0.06, yy2+0.03);
glVertex2f(xx2-0.06, yy2-0.03);
glEnd();
glPopMatrix();
需要平移回中心 (0, 0, 0),应用旋转然后回到原来的位置 (xx2, yy2, 0)
【问题讨论】:
标签: c++ c opengl rotation translate-animation