OpenGL (C++) で四角形をうまく回転させることができました。「分離軸定理」を使用して、2 つの長方形の衝突をテストするプログラムを作成しています。定理を使用するには、長方形の各コーナーの 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();