衝突する 2 つの立方体からなる単純なプログラムを作成しました。それらを動かして衝突をテストすると、問題なく動作しますが、立方体を回転させると、衝突が台無しになります。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;