OpenGL에서 직사각형을 회전시킬 수있었습니다 (C++). 나는 "분리 된 축 정리"를 사용하여 충돌을 위해 두 개의 직사각형을 테스트하는 프로그램을 만들고 있습니다. 정리를 사용하려면 사각형 모퉁이의 x 및 y 좌표가 필요하지만 문제는 해당 좌표를 glRotatef(...)
이라고 부르지 만 직사각형 모퉁이의 좌표는 회전 된 값으로 변경되지 않습니다. 사각형은 반드시 회전해야합니다. glRotatef가 호출 된 후 어떻게 내 사각형의 좌표를 업데이트 할 수 있습니까?좌표 위치를 업데이트하지 않습니까?
코드 :
// float r1.x[4] and r1.y[4] hold the x and y position of each of the 4 corners, starting with the upper left (r1.x[0], r1.y[0])
glLoadIdentity();
glTranslatef((r1.x[0] + r1.x[2])/2, (r1.y[1] + r1.y[3])/2, 0); // Translates matrix to center of rectangle
glRotatef(r1.angle, 0, 0, 1);
glTranslatef(-((r1.x[0] + r1.x[2])/2), -((r1.y[1] + r1.y[3])/2), 0); // Translates back
r1.angle++;
glBegin(GL_QUADS);
glVertex2f(r1.x[0], r1.y[0]);
glVertex2f(r1.x[1], r1.y[1]);
glVertex2f(r1.x[2], r1.y[2]);
glVertex2f(r1.x[3], r1.y[3]);
glEnd();