Создание и использование AABB для обнаружения столкновений 3d (OpenGL)

Предположим, у меня есть квадрат, который я создал следующим образом:

glBegin(GL_QUADS);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);

glColor3f(1.0f,0.5f,0.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);

glColor3f(1.0f,1.0f,0.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);

glColor3f(0.0f,0.0f,1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);

glColor3f(1.0f,0.0f,1.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f, 1.0f);
glVertex3f( 1.0f,-1.0f,-1.0f);
glEnd();

Теперь предположим, что я хочу использовать структуру AABB, чтобы определить, когда сфера сталкивается со сторонами этого куба (не сверху или снизу куба), и, таким образом, предотвратить ее прохождение через куб? Есть идеи, как это сделать?

Также я мог бы использовать структуру AABB, если бы я реализовал куб, используя glutSolidCube?

Также есть ли легче обнаружить столкновение без использования AABB? Может быть, как тестирование на пересечение или что-то в этом роде?

0

Решение

OpenGL — это система рендеринга. Он не имеет понятия обнаружения столкновений или даже объекты за пределы базовых примитивов рендеринга (точки / линии / треугольники). OpenGL не поможет вам в обнаружении столкновений. Для этого вам нужно использовать библиотеку физики или столкновений.

2

Другие решения

Других решений пока нет …