Я делаю игру в OpenGL. Игра состоит в том, что самолет свободно летит в трехмерном мире, который должен пройти через определенные области, например, если бы он проходил через окна. Прямо сейчас я пытаюсь вычислить столкновение самолета с упомянутыми "окнами". В качестве первого подхода я подумал о том, чтобы иметь развернутую AABB для траектории плоскости и несколько AABB для каждого окна, например, если эти AABB перекрываются, существуют потенциальные случаи прохождения плоскости через нее.
Но проблема начинается, когда я пытаюсь вычислить AABB, поскольку каждый известный мне алгоритм должен знать координаты обоих объектов (плоскость + окно) в одной и той же системе отсчета. Моя программа рисует мир так, как будто он движется, а не плоскость, которая всегда центрирована в начале координат (на самом деле, при z = -10, поэтому он отображается). Реальная проблема заключается в том, как вычислить координаты каждого "окна", если смотреть с плоскости. Вот код, который я использую для рисования сцены:
glLoadIdentity();
//these are the rotations of the plane of the ground
glRotatef(RotHorizont, 0.0f, 0.0f, 1.0f);
glRotatef(-directionX, 1.0f, 0.0f, 0.0f);
glRotatef(-directionY, 0, 1.0f, 0);
//and these are the movement of the plane
//(the multiplication by 0.0174532925f is to convert the angles to radians
Tx -= (float)Math.sin(directionY * 0.0174532925f) * velocity;
Tz -= (float)Math.cos(directionY * 0.0174532925f) * velocity;
Ty -= (float)Math.sin(directionX * 0.0174532925f) * velocity;
glTranslatef(-Tx, Ty, -Tz);
/*
here I draw the ground and the windows
*/
....
//and now I draw the plane
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -10.0f);
/* draw the plane */
Итак, как, черт возьми, я могу получить координаты "окон"?
Или есть какой-то другой способ вычисления столкновения?
Мне очень нужна ваша помощь, я буду очень благодарен.
Спасибо всем!