Как вращать квадрат вокруг своей оси, используя полярные координаты? - PullRequest
0 голосов
/ 21 марта 2020

Я сделал мини-игру, которая позволяет перемещать квадратную переднюю и заднюю часть в зависимости от того, какая передняя сторона обращена. Теперь я хочу повернуть квадрат вокруг своей оси, но после его перемещения я не могу получить желаемый результат. Как использовать полярные координаты, чтобы это произошло? Или есть другой способ?

void displayScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

glTranslatef(0,u,0);
glRotatef(a,u*cos(a),u*sin(a),1);

glColor3f(1,1,1);

glBegin(GL_QUADS);
glVertex3f(-0.4,-0.4, -5.0);
glVertex3f( 0.4,-0.4, -5.0);
glVertex3f( 0.4, 0.4, -5.0);
glVertex3f(-0.4, 0.4, -5.0);
glEnd();

drawBullet();
glutSwapBuffers();
}

void ProcessSpecialKeys(unsigned char key, int x, int y)
{
if (key == GLUT_KEY_UP)
{
     u+=0.1;
}

if (key == GLUT_KEY_DOWN)
{
     u-=0.1;
}

if (key == GLUT_KEY_LEFT)
{
    a+=10.0;
}

if (key == GLUT_KEY_RIGHT)
{
    a-=10.0;
}
glutPostRedisplay();
}
...