Я пишу приложение, которое рисует 2D-треугольник и поворачивает его вокруг своей оси Z в зависимости от его положения.Его середина (t1.tx, t1.ty) постоянно изменяется при перетаскивании треугольника мышью.Проблема в том, что когда я перетаскиваю треугольник в другое место, вместо того чтобы оставаться там, где он и вращается, он вращается по кругу вокруг своей центральной точки.
Что я делаю не так?Я хочу, чтобы он вращался в своем положении.
void drawTriangle() {
glBegin(GL_POLYGON);
glColor3f((float)200/255, (float)200/255, (float)200/255);
glVertex2f(t1.tx, t1.ty + .2); // top point of triangle
glVertex2f(t1.tx - .2, t1.ty - .2); // left point
glVertex2f(t1.tx + .2, t1.ty - .2); // right point
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
glTranslatef(t1.tx, t1.ty, 0); // move matrix to triangle's current center point
glRotatef(theta, 0, 0, 1.0); // rotate on z-axis
drawTriangle();
glPopMatrix();
glutPostRedisplay();
glutSwapBuffers();
}