创建和使用AABB进行碰撞检测3d(OpenGL)

时间:2013-04-01 09:20:50

标签: c++ opengl collision-detection aabb

假设我有一个我用以下方式创建的正方形:

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?也许喜欢测试交叉点或类似的东西?

1 个答案:

答案 0 :(得分:2)

OpenGL是一个渲染系统。它没有碰撞检测的概念,甚至没有基本渲染图元(点/线/三角形)之外的对象。 OpenGL不会帮助您进行碰撞检测。你需要使用物理或碰撞库。