我写了一个简单的程序,它由两个碰撞的立方体组成。当我移动它们并测试碰撞时,它工作得很好,但是当我旋转一个立方体时,碰撞就搞砸了。我知道发生这种情况是因为 openGL 不会更改我的对象坐标,那么,我该如何实现呢?
我尝试像这样计算新坐标:
new.x = coordinates.x * cos(degrees) - coordinates.y * sin(degrees);
new.y = coordinates.x * sin(degrees) + coordinates.y * cos(degrees);
但是 new.x 和 new.y 是不对的。
我也试过这个,将模型视图乘以 (new.x, new.y, 0, 1):
GLdouble modelview[16], NEWVERTEX[4];
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
nmview[0] = modelview[0] * new.x + modelview[4] * new.y + modelview[8] * 0 + modelview[12] * 1;
nmview[1] = modelview[1] * new.x + modelview[5] * new.y + modelview[9] * 0 + modelview[13] * 1;
nmview[2] = modelview[2] * new.x + modelview[6] * new.y + modelview[10] * 0 + modelview[14] * 1;
nmview[3] = modelview[3] * new.x + modelview[7] * new.y + modelview[11] * 0 + modelview[15] * 1;