假设我有一个按以下方式创建的正方形:
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 结构来检测球体何时与该立方体的侧面(不是立方体的顶部或底部)碰撞,从而防止它穿过立方体?关于如何进行此操作的任何想法?
如果我使用 glutSolidCube 实现了立方体,我还能使用 AABB 结构吗?
另外,有没有不用 AABB 更容易检测碰撞的方法?也许像测试交集之类的?
最佳答案
OpenGL 是一个渲染系统。它没有碰撞检测的概念,甚至没有基本渲染图元(点/线/三角形)之外的对象。 OpenGL 不会帮你做碰撞检测。为此,您需要使用物理库或碰撞库。
关于c++ - 创建和使用 AABB 进行碰撞检测 3d (OpenGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15740761/